Description
ry 在手机中存数字号码时有个习惯,就是会在号码中人为去给他加密,这一次他想了一个这样的算法,例如数字号码 121 ,他会进行这样的操作去给其加密,将这个数乘以10再加上这个数,即 1210+121 = 1331, 那么ry就会存储记录下 1331 这个数字号码。现在给你一个加密后的号码,询问你加密前的号码是多少?
Input
输入一串的数字,表示加密后的数字,这串数字不存在前导0,其长度用 n 表示 (1 <= n <= 1000000), 保证输入的数字大于0
Output
输出一行表示加密前的数字号码,若其不存在则输出 "No Numbers!" (输出结果不加引号)
Sample Input 1
1331
Sample Output 1
121
Sample Input 2
909
Sample Output 2
No Numbers!
我的代码:
#include <bits/stdc++.h>
using namespace std;
char a[10000005];
int p[10000005],w=0;
int main()
{
scanf("%s",a);
int len = strlen(a);
int ans=0;
int q=0;
// int ok=0;
for(int i=0;i<len;i++)
{
ans = a[i] - '0';
// printf("ans = %d\n",ans);
ans = 10*q+ans;
p[w++]=ans/11;
q = ans%11;
}
if(q!=0)
{
printf("No Numbers!\n");
return 0;
}
else
{
int flag = 0;
for(int i=0;i<w;i++)
{
if(p[i] == 0 && flag == 0)
{
flag=0;
continue;
}
else
{
flag = 1;
printf("%d",p[i]);
}
}
return 0;
}
// printf("%s",a);
return 0;
}
很坑的样例:110902
因为中间零没有处理。