我第一次交的代码最后一个点TLE然后我便把辗转相除法的数换大 结果#3WA了 两次都是90分
第一次代码 最后一个点TLE
#include<stdio.h>
int main(){
int n,m,k,x,q,p;
scanf("%d%d%d%d",&n,&m,&k,&x);
q=(n%m==0)?(n/m):n;//确定周期
p=10%q;
for(int i=2;i<=k;i++){
p=p*10;
p=p%q;
}//辗转相除
x+=p*m;//最后几次变化后的总编号数
x=x%n;//算出现在的位置
printf("%d",x);
return 0;
}
第二次代码 #3WA 我的下载数据点的次数刚好用完了
#include<stdio.h>
int main(){
int n,m,k,x,q,p,u;
scanf("%d%d%d%d",&n,&m,&k,&x);
q=(n%m==0)?(n/m):n;
u=k;
p=10000%q;
for(int i=2;i<=k/4;i++){
p=p*10000;
p=p%q;
u-=4;
}//换大后的辗转相除
u=u-4;//由于提前了一次所以多减个4来确定k%4的值
//printf("p=%d u=%d ",p,u);//debug
if(u!=0)
for(int i=1;i<=u;i++){
p=p*10;
p=p%q;
}//把此时剩下的k%4来再辗转相除一次
x+=p*m;//在最后那个周期内的值
x=x%n;//算出座位编号
printf("%d",x);
return 0;
}
求大佬帮助