http://blog.csdn.net/yzj577/article/details/38152511
题意:给定你一个数n,请你统计出在[a,b]这个区间中和n互质的数的个数。两个数互质当且仅当他们除了1之外没有其他的公共因子或者他们最大的公共因子是1。1和任何数是互素的。
输入:第一行输入一个整数T(1 <= T <= 100),表示T组测试数据。接下来T行,每行3个整数a,b,n(1 <= a <=b <=10^15, 1<=n <= 10^9),用空格隔开。
输出:输出一个整数表示和n互质的数的个数。
测试用例
输入
2
1 10 2
3 10 5
输出
5
6
#include <iostream> using namespace std; #include <stdio.h> #include <cmath> int a[1000005]; int main() { int T,n,k; scanf("%d",&T); while(T--) { long long A=0,B=-1; scanf("%d%d",&n,&k); a[0]=n; if(n==0) { printf("0\n"); continue; } if(!k) { printf("-1\n"); continue; } if(k>n) { printf("-1\n"); continue; } int t=0,i=1,flag=-1; while(flag!=1) { a[i]=t+a[i-1]*k%10; t=a[i-1]*2/10; i++; if(a[i-1]*k==n&&t==0) { flag=1; printf("%d",a[0]); for(int q=i-1; q>=1; q--) printf("%d",a[q]); printf("\n"); } } } return 0; }