题目分析

一直本真电脑累我不累的思想 反正就是看是不是17的倍数那就干脆除17看有没有余好了

#include<stdio.h>  
int main()  
{  
    int i,sum;  
    char str[200];  
    while(scanf("%s",str)&&str[0]!='0') //百度的ACM写法
    {  
        sum=0;  
        for(i=0;str[i]!='\0';i++)  
        {  
            sum=sum*10+str[i]-'0';//转成整形  
            sum=sum%17;  
        }  
        printf("%s\n",sum?"0":"1"); //3目运算 如果为0就选0不是就是后者 
    }  
    return 0;  
}


点赞(31)
 

0.0分

5 人评分

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

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

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

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

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

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

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

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

评论列表 共有 20 条评论

emmmm 7年前 回复TA
#include<stdio.h>
int main()
{
	int n=1,i,j,a[10],b[10],c[10],d[10];
    for(i=0;i<n;i++) 
    {
    	scanf("%d",&a[i]);
    	n++;
    	if(a[i]==0)
    	n--;
    }
	for(i=0;i<n-1;i++)
	{
		b[i]=a[i]/10;
		c[i]=a[i]%10;
		d[i]=b[i]-5*c[i];
	}
	
	for(i=0;i<n-1;i++)
	{
		if(a[i]%17==0&&d[i]%17==0)
		printf("1\n");
		else
		printf("0\n");
	}
	return 0;
} 
大佬能帮忙看看哪有问题么?运行结果是对的啊,万分感激
laolin2333 7年前 回复TA
@陈雨斌 for里面的sum爆炸了
laolin2333 7年前 回复TA
@旧时光丶 sum只是两位数,不会溢出的,帖主的做法就跟我们自己除一个数一样
laolin2333 7年前 回复TA
写法真的很好
旧时光丶 7年前 回复TA
sum=sum*10+str[i]-'0';你的sum定义了整形数据;这样处理不会产生溢出么
shiyi 7年前 回复TA
我明白了,题主的代码思想了,谢谢<'-'>
shiyi 7年前 回复TA
char n[100];
    for(int i=0;i<10;i++){
        scanf("%s",n);
        long long len,d=0;
        len=strlen(n);
        for(int i=0;i<len;i++){
            d=d+(n[i]-'0')*pow(10,len-i-1);
        }
我在这里得到的 d 仍然不是要得到的?
和你代码里的 sum 有啥区别呀?
一叶知秋 7年前 回复TA
楼主写的很好,这题实在蛋疼。不知道为什么使用atoi()就是提示错误,题目中要求最多十组数据,可是好像也不需要遵守。
陈雨斌 7年前 回复TA
# include <stdio.h>
int main (void)
{
	int i , sum ;
	char a[301];
	scanf ("%s" , a);
	do{
	for (i = 0 , sum = 0 ; a[0] != '0' && a[i] != '\0' ; i++ )
	{
		sum = sum * 10 + a[i] - '0' ;
	}
	if(sum == 0)
		break;
	i = sum%10 * 5;
	if ((sum / 10 - i)%17 == 0)
		printf ("1\n");
	else 
		printf ("0\n");
	scanf ("%s" , a);
	}while (a[0] != '0');

	return 0;
}
这个程序哪里有问题吗?
路小鹿 7年前 回复TA
长整数的除法,学习了!