2020年3月29日 星期日

3.1-CaesarCipher-Lab

解題心得:
為了修正輸入k值很小很小的問題我想了好久,之後直接用計算機找出26的n次方加上去 >__<
但更好的方法是甚麼呢?

程式碼:
#include <iostream>
#include <string>
using namespace std;

int main() {
 long long int k;
 string plaintext;
 while (getline(cin, plaintext))
 {
  cin >> k;
  cin.ignore();
  for (int i = 0; i < plaintext.size(); i++)
  {
   if ('a' <= plaintext[i] && plaintext[i] <= 'z')
   {
    plaintext[i] = (plaintext[i] - 'a' + k + 208827064576) % 26 + 'a';

   }
   else if (plaintext[i] != ' ')
    plaintext[i] += 'a';
  }
  cout << plaintext << endl;
 }
 
 

 
    return 0;
}

沒有留言:

張貼留言