90分求助
查看原帖
90分求助
389652
MaxYang楼主2021/2/7 12:46

我第一次交的代码最后一个点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;
}

求大佬帮助

2021/2/7 12:46
加载中...