点赞(0)
 

0.0分

14 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 12 条评论

九九归一 3年前 回复TA
@葡萄 晓得了晓得
渐行渐远 4年前 回复TA
@渐行渐远 懂了,谢谢
葡萄 4年前 回复TA
@葡萄 谢谢啦!
yellow 4年前 回复TA
@渐行渐远 好像是循环的时候把数值向前缓冲
yellow 4年前 回复TA
@葡萄 数值太大,没办法存10的100次方
葡萄 4年前 回复TA
哪位大哥解释下,为什么不直接拿输入的数对17求余!
渐行渐远 4年前 回复TA
s*10的作用是怎末回事啊,知道控制第一个,但是具体是怎末控制呢
木头 4年前 回复TA
#include <string.h>
int main(){
	char ch[1000]={0};
	int x=0,len,i=0,y,counter=0,arr[10]={-1};		
	scanf("%s",ch);
	do{
		len=strlen(ch);
		if(len<4){
			//字符转数字
			for(i=0,y=0;i<len;i++){
				y=y*10+ch[i]-'0';
			}
				i=y/10-(y%10*5);
				if(0==i%17){
					arr[counter]=1;
					counter++;
				}else{
					arr[counter]=0;
					counter++;
				}
		}else{

			//字符串预处理 去掉末尾,转换数字*5,再取三位,转换成数字减去 末尾*5,得出的结果再转回字符
			y=5*(ch[len-1]-'0');//末尾的数字*5
			x=(ch[len-4]-'0')*100+(ch[len-3]-'0')*10+(ch[len-2]-'0');//取剩余部分最后三位,转换成数字
			x=x-y;
			//将得到的数字x再转回字符
			if(x>=100){
				ch[len-1]='\0';//需要对字符的末尾,手动加'\0
木头 4年前 回复TA
我日,按照他的定理也做了,自测答案没问题,但是无法通过答案测试。不按他的定理,直接对字符串求模,居然通过了
#include <stdio.h>
#include <string.h>
int main(){
	char ch[1000]={0};
	int x=0,len,i=0,counter=0,arr[10]={-1};		
	scanf("%s",ch);
	do{
		len=strlen(ch);			
			x=ch[0]-'0';
		for(i=1;i<len;i++){
			x=x*10;
			x=x+ch[i]-'0';
			x=x%17;
		}	
		if(0==x){
			arr[counter]=1;
			counter++;
		}else{
			arr[counter]=0;
			counter++;
		}
		scanf("%s",ch);
	}while('0'!=ch[0]);
	for(i=0;i<counter;i++){
		printf("%d\n",arr[i]);
	}	
	return 0;
}
侑理 4年前 回复TA
@q671383789 @MarkandLcg long long int 也存不了10的100次方