因为题目设计到一个非常长的数:
1717171717171717171717171717171717171717171717171718
这行数无法用unsigned long long int(C++最大整数)表示出来,可以借助string类型;题目要求多个数连续求解,可以借助容器数组。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int is_17beishu(const string& n) {
int y=0;//y用来存储余数
//
for(char digit:n){
//digit-'0'的作用是将用字符存储的数字转换为整型数字
//下行代码作用是实时更新余数
y=((y*10+(digit-'0'))%17);
}
if(y==0) return 1;
else return 0;
}
int main()
{
vector<string> num;
int index=0;//用来记录输出位数,因为题目示例没有输出最后的0
string n;
for(int i=0;;i++) {
cin>>n;
if(n=="0") break;
num.push_back(n);
index++;
}
for(int i=0;i<index;i++){
cout<<is_17beishu(num[i])<<endl;
}
return 0;
}
输出结果:
倒数第五个0是手动输的零。