s*10的作用是怎末回事啊,知道控制第一个,但是具体是怎末控制呢
#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
我日,按照他的定理也做了,自测答案没问题,但是无法通过答案测试。不按他的定理,直接对字符串求模,居然通过了 #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; }
没有看懂 我是按照题目给的定理来的,老哥能不能看看,为什么错误50% #include<stdio.h> int main(){ long long int i; int a,b[10]={0}; int k=0; while(scanf("%lld",&i)&&i!=0){ a=i%10; i=i/10; if((i-5*a)%17==0) b[k]=1; k++; } for(int j=0;j<k;j++){ printf("%d\n",b[j]); } }
MarkandLcg 2020-03-03 16:14:16 |
我和你写的差不多但是这样提交就是错的
侑理 2020-03-06 15:43:03 |
@MarkandLcg long long int 也存不了10的100次方
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:804 |
【绝对值排序】 (C语言代码)浏览:892 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:638 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:710 |
sizeof的大作用 (C语言代码)浏览:1591 |
GC的苦恼 (C语言代码)浏览:672 |
分糖果 (C语言代码)浏览:980 |
简单的a+b (C语言代码)浏览:857 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:620 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:419 |
yellow 2020-04-23 22:15:50 |
数值太大,没办法存10的100次方
葡萄 2020-04-25 12:39:55 |
谢谢啦!
九九归一 2021-04-15 16:42:54 |
晓得了晓得