原题链接:数字整除
解题思路:
注意事项:
参考代码:
/*
当数小于int最大值时,直接转为int型,取余判断
当数大于int最大值时,循环递归 “个位数字去掉,再从余下的数中减去个位数的5倍 ”
*/
#include <iostream>
#include <string>
using namespace std;
int strtoint(string str){
int i, num=0;
for(i=0; i<str.size(); i++){
num = num*10 + (str[i]-'0');
}
return num;
}
int main(){
int i,ans,weishu,num;
string nums;
while( cin>>nums && nums!="0"){
if(nums.size()<10){
cout<< (strtoint(nums)%17==0) <<endl;
}
else {
ans=strtoint(nums.substr(nums.size()-3,3));
for(i=nums.size()-4; i>=0; i--){
weishu = ans%10;
ans = (nums[i]-'0')*100 + ans/10;
ans -= weishu*5;
//cout<<ans<<','<<weishu<<endl;
}
cout<< (ans%17==0) <<endl;
}
}
return 0;
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复