EOJ Monthly 2020.9 Sponsored by TuSimple E. 加密的情书
生活随笔
收集整理的這篇文章主要介紹了
EOJ Monthly 2020.9 Sponsored by TuSimple E. 加密的情书
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
E加密的情書
本人太菜,只會簽到
題意:
一個多位數可以通過加密變成個位數,加密方式為:各個位數上的數相加,直到加成個位數
例如:
123 --》 1+2+3=6
現在給出加密后的一串密文
問是否存在連續的自然數數列 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;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=2;i<=n;i++){if(a[i]<=9&&a[i]>=2){if(a[i-1]!=a[i]-1){cout<<-1;return 0;}}else if(a[i]==1){if(i==2){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;}}cout<<a[1]<<" "<<a[1]+n-1;return 0; }總結
以上是生活随笔為你收集整理的EOJ Monthly 2020.9 Sponsored by TuSimple E. 加密的情书的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何制作一个简单的游戏 Cocos2d
- 下一篇: OBS安装下载使用