Tile Painting

第二天叫醒我的不是闹钟,是梦想!

Ujan has been lazy lately, but now has decided to bring his yard to good shape. First, he decided to paint the path from his house to the gate.

The path consists of n consecutive tiles, numbered from 1 to n. Ujan will paint each tile in some color. He will consider the path aesthetic if for any two different tiles with numbers i and j, such that |j−i| is a divisor of n greater than 1, they have the same color. Formally, the colors of two tiles with numbers i and j should be the same if |i−j|>1 and nmod|i−j|=0 (where xmody is the remainder when dividing x by y).

Ujan wants to brighten up space. What is the maximum number of different colors that Ujan can use, so that the path is aesthetic?

Input
The first line of input contains a single integer n (1≤n≤1012), the length of the path.

Output
Output a single integer, the maximum possible number of colors that the path can be painted in.

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll x;
int main()
{
	scanf("%lld", &x);
	int f = 0;
	ll m = 0;
	for (ll i = 2; i * i <= x; i++){
		if(x % i == 0){
			f = 1;
			int num = 0;
			while(x % i == 0) x /= i, num++;
			if(x == 1) m = i;
			else break;
		}
	}
	if(!f) printf("%lld\n", x);
	else if(f == 1 && m) printf("%lld\n", m);
	else printf("1\n");
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值