hdoj5832【模拟】
主要还是一个10001的倍数的问题;
队友的思路:
01
1个数*10001,最后四位是这个数的后四位
比如
521456
10001
521456
521456
9 5215081456
从后面for过来,如果i比前面4个大,前第四位要+10,前第五位-1,
否则直接减,最后都会变成0,如果成立的话
比赛时的挫code…….
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<algorithm>
#include<string>
using namespace std;
const int N=10001000;
#define ll long long
#define mod 10000007
int n,m;
char s[N];
int main()
{
int k = 1;
while(~scanf("%s",s))
{
printf("Case #%d: ",k++);
int len = strlen(s);
if(s[0] == '0' && len == 1)
{
printf("YES\n");
continue;
}
int flag = 0;
for(int i = len-1; i >= 4; i--)
{
if(s[i] != '0')
{
if(s[i-4] >= s[i])
{
s[i-4] = s[i-4] - (s[i]-'0');
s[i] = '0';
}
else
{
s[i-4] = s[i-4]+10-(s[i]-'0');
s[i] = '0';
s[i-5]--;
}
}
}
for(int i = 0; i < len; i++)
{
if(s[i] != '0')
flag = 1;
}
if(flag == 1)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}