題目鏈接:http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1755
思路:大數相減,取餘,注意前導零和大小關係。
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
void sp(string &s1,string &s2)
{
int l1=s1.length(),l2=s2.length();//cout<<s1.length()<<" "<<s2.length()<<endl;
string tmp;
if(l1>l2) tmp=s1,s1=s2,s2=tmp;
else if(l1==l2)
{
int fg=0;
for(int i=0;i<l1;i++)
if(s1[i]>s2[i])
{
fg=1;break;
}
if(fg) tmp=s1,s1=s2,s2=tmp;
}
}
string minu(string s1,string s2)
{
int cnt,i,j,l1=s1.length(),l2=s2.length();
string s3;
for(i=l2-1,j=l1-1;i>=0;i--,j--)
{
cnt=s2[i]-(j>=0?s1[j]:'0');
if(cnt<0)
{
cnt+=10;
if(i>0) s2[i-1]--;
}
s3+=(cnt+'0');
}
i=l2-1;
while(s3[i]=='0') i--;
if(i<0) return "0";
s2.clear();
for(;i>=0;i--) s2+=s3[i];
return s2;
}
int pd(string s)
{
int l=s.length(),i,cnt=0;
for(i=0;i<l;i++)
{
cnt=cnt*10+s[i]-'0';
cnt=cnt%17;
}
if(cnt==0) return 1;
else return 0;
}
int main(void)
{
string s1,s2,tp;
while(cin>>s1)
{
if(s1=="0") break;
s2.clear();tp.clear();
int i,l=s1.length();
int cnt=(s1[l-1]-'0')*5;
//cout<<cnt<<endl;
//s1.pop_back();
//cout<<s1<<endl;
for(i=0;i<l-1;i++) tp+=s1[i];
s1=tp;
s2+=(cnt/10+'0');
s2+=(cnt%10+'0');
sp(s1,s2);
//<<s1<<" "<<s2<<endl;
s1=minu(s1,s2);
if(s1=="0")
{
cout<<0<<endl;continue;
}
//cout<<s1<<endl;
if(pd(s1)==1) cout<<1<<endl;
else cout<<0<<endl;
}
return 0;
}