常德制作网站,美耐皿 技术支持 东莞网站建设,做网站的桔子什么,装修设计费收费标准E加密的情书 本人太菜#xff0c;只会签到
题意#xff1a;
一个多位数可以通过加密变成个位数#xff0c;加密方式为#xff1a;各个位数上的数相加#xff0c;直到加成个位数 例如#xff1a; 123 --》 1236 现在给出加密后的一串密文 问是否存在连续的自然数数列 l …E加密的情书 本人太菜只会签到
题意
一个多位数可以通过加密变成个位数加密方式为各个位数上的数相加直到加成个位数 例如 123 --》 1236 现在给出加密后的一串密文 问是否存在连续的自然数数列 l ~ r加密后就是题目所给的密文
题解
一开始绕的晕头转向没看明白后来慢慢捋顺 就是给密文求原文是什么但是注意题目要求原文必须是连续的长度肯定也和密文一样因为一个数加密成另一个数一一对应 我们来举一下例子 比如原文是 19 20 21 加密后就是 1 2 3 原文是 18 19 20 加密后是 9 1 2 等等例子 我们可以发现加密后的文字一般是不出现0的因为9之后直接就是1, 但是有一种情况除外那就是原文是0 1 2 加密后还是0 1 2也就是原文就是0那密文肯定是0 其他不可能出现零而且9后面就是1其他数都必须是相连的不然肯定不存在解 排除所有不是解的情况那剩下的都成立那我们直接用a[1]~a[1]n-1作为原文即可我们只需要输出任意符合答案即可我们就输出原文最接近密文本身的情况 看看代码就悟出来了
题意
#include cstdio
#include iostream
using namespace std;
int a[1010];
int main()
{int n;cinn;for(int i1;in;i){cina[i];}for(int i2;in;i){if(a[i]9a[i]2){if(a[i-1]!a[i]-1){cout-1;return 0;}}else if(a[i]1){if(i2){if(a[1]0)continue;else if(a[1]9)continue;else{cout-1;return 0;}}else if(a[i-1]!9){cout-1;return 0;}}else{cout-1;return 0;}}couta[1] a[1]n-1;return 0;
}