int i=1; int n=1; int temp=1; scanf("%d",&k); if(k==1)//本来想一次性解决,发现用后面的运算的话,出现k==1但是输出2的情况,而改变运算顺序达不到题目要求,索性分开来 { printf("1\n"); } else { while(temp!=0) { temp=temp*10+1; temp=temp%k; i++; } printf("%d\n",i);...
Description 由n个1组成的整数能被K(K<10000)整除,n至少为多少? Input 多组测试数据,第一行输入整数T,表示组数 然后是T行,每行输入1个整数代表K Output 对于每组测试数据输出1行,值为n Sample Input 1 11 1. 2. Sample Output 2 1. #include<stdio.h> int main() { int t,k; while(scanf("%d",...
这里面的关键点就是它是同步进行加一操作和求余操作,这就将原本的整除操作分成了俩小步,而通过这俩小步,就不用计算很大的数,而是层层推进,每次计算的量都很小,这就极大地减少了计算的时间,优化了程序。 同理,若加的不是1,这个小技巧一样适用,它主要的核心思想就是拆分整除的过程!
}intc=1;inttemp=1;while(temp!=0) { temp=temp*10+1; temp=temp%k; c++; } printf("%d\n",c); } }return0; }