[2016/8/2]训练

来源:互联网 发布:党员干部网络言行规范 编辑:程序博客网 时间:2024/06/18 15:42

1.https://www.bnuoj.com/v3/problem_show.php?pid=50122

唯一分解定理:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。

判断每个数除3,2外的因子是否相同。

#include <stdio.h>#include <algorithm>using namespace std;long long num[100005];int main(){int n;scanf("%d",&n);scanf("%I64d",&num[0]);while(num[0]%3==0)num[0]/=3;while(num[0]%2==0)num[0]/=2;long long x = num[0];bool j = true;for(int i = 1;i<n;i++){scanf("%I64d",&num[i]);while(num[i]%3==0)num[i]/=3;while(num[i]%2==0)num[i]/=2;if(num[i]!=x){j = false;break;}}if(j) printf("Yes\n");else printf("No\n");return 0;}


https://www.bnuoj.com/v3/problem_show.php?pid=50531

找其因数,每找一次除一次去除多余的。再把因数乘起来。

#include <stdio.h>#include <algorithm>using namespace std;int main(){long long num;scanf("%I64d",&num);long long sum = 1; for(long long i = 2;i*i<=num;i++){if(num%i==0){sum*=i;while(num%i==0)num/=i;}}    printf("%I64d\n",sum*num);return 0;}




0 0
原创粉丝点击