a=10
/*给a赋值
b=20
给b赋值*/
似乎将b=20注释掉了
1.如果没有注释,结果输出是a+b=20,因为你在个数输出中对应的变量是a=b,就是将b的值给a,然后输出a
2.如果注释了,则b始终等于0,则结果输出是,a也等于0,结果输出a+b=0
如果你改成加号,你说结果是10就可以理解了,因为你将b=20注释掉了,所以a=10,b=0,a+b则等于10
恐怕你也没有想将b=20注释掉吧!!
#include <string.h>#include <math.h>
long l,k,mod //全局long int 变量 l k mod
int a[10002] //全局包含10002个int类型的数组
int pd[10002] //全局包含10002个int类型的数组
void work() //子函数声明 输出当l的i次方对10的k次方取余为l的时候 i的次数
{
long s=l%mod,v=l%mod //% 取余 1对初了0和本身的数取余数结果都为1
int i
pd[s]=1
a[s]=1
for(i=2i<=100000i++)
{
s=(s*v)%mod
if(pd[s]) //如果pd[s]为1 进行循环体 为0 则跳过循环体
{
printf("%d %d\n",i,a[s])
return
}
a[s]=i
pd[s]=1
}
}
int main()
{
scanf("%ld%ld",&l,&k)// 键入 l k的值
mod=pow(10,k) //pow为库函数 实现的是10的k次方
work() //调用work函数
return 0
}