類與對象ios
求兩個正整數a 和 b的最大公約數。c++
要求使用c++ class編寫程序。能夠建立以下class算法
輸入描述函數
兩個正整數a,b,而且1=<a,b <=10000加密
輸出描述spa
a和b的最大公約數設計
樣例輸入code
1000 1000
樣例輸出對象
1000
#include <iostream> #include <iomanip> #include <algorithm> using namespace std; class Integer { private: int num; public: Integer(int n); int gcd(Integer b); }; Integer::Integer(int n) { num = n; } int Integer::gcd(Integer b) { int tmp_min = min(num, b.num); int tmp_max = max(num, b.num); while (tmp_max % tmp_min != 0) { int i = tmp_max; tmp_max = tmp_min; tmp_min = i % tmp_max; } return tmp_min; } int main() { int a, b; cin >> a >> b; Integer A(a); Integer B(b); cout << A.gcd(B) << endl; system("pause"); return 0; }
移位密碼是最簡單的一類代替密碼,具體算法就是將字母表的字母右移k個位置(k<26),k稱爲密鑰,並對字母表長度做模運算。blog
已知加密過程爲:將每一個字母按照字母表的順序右移k位。加密函數:E(m)=(m+k)%26. (明文 -> 密文)
現給你一串密文,所有由大寫字母組成。請破譯出明文!(密文 -> 明文)
請設計實現PassWord類:
class PassWord {
private:
int k;
public:
PassWord(int);
char convert(const char); // 解密函數
};
屬於一個整數k,表明移位密碼的密鑰,k<26。
屬於一個整數n,表明接下來輸入字符的個數,接着輸入n個字符
輸出描述輸出對應的明文
1 8 JMPWFZPV樣例輸出
ILOVEYOU
#include <iostream> #include <algorithm> #define MAX_LEN 1000 using namespace std; char sec[MAX_LEN + 10]; class PassWord { private: int k; public: PassWord(int i); char convert(const char c); }; PassWord::PassWord(int i) { k = i; } char PassWord::convert(const char c) { return (c - 'A' - k + 26) % 26 + 'A'; } int main() { int k, n; //k表明移位的密匙,c表明字符數 cin >> k >> n; PassWord password(k); for(int i = 0; i < n; ++ i) { char a; cin >> a; sec[i] = password.convert(a); } for (int i = 0; i < n; ++i) cout << sec[i]; cout << endl; system("pause"); return 0; }
乘數密碼也是一種替換密碼,其加密變換是將明文字母串逐位乘以密鑰k並進行模運算,數學表達式以下:
E(m) = k*m mod 26 (明文 -> 密文)
現給你一串明文,所有由大寫字母組成,請加密成密文。
請設計實現PassWord類:
class PassWord {
private:
int k;
public:
PassWord(int);
char convert(const char); // 加密函數
};
輸入描述
屬於一個整數k,表明乘法密碼的密鑰,0 < k < 26。
屬於一個整數n,表明接下來輸入字符的個數,接着輸入n個字符
輸出描述輸出對應的密文
3 8 ILOVEYOU樣例輸出
YHQLMUQI
#include <iostream> using namespace std; char sec[1000]; class PassWord { private: int k; public: PassWord(int t); char convert(const char c); }; PassWord::PassWord(int t) { k = t; } char PassWord::convert(const char c) { return (c - 'A') * k % 26 + 'A'; } int main() { int k, n; cin >> k >> n; PassWord p(k); for (int i = 0; i < n; ++i) { char a; cin >> a; sec[i] = p.convert(a); } for (int i = 0; i < n; ++i) cout << sec[i]; cout << endl; system("pause"); return 0; }
乘數密碼也是一種替換密碼,其加密變換是將明文字母串逐位乘以密鑰k並進行模運算,數學表達式以下:
E(m) = k*m mod 26 (明文 -> 密文)
現給你一串密文,所有由大寫字母組成,請破譯出明文。(密文 -> 明文)
請設計實現PassWord類:
class PassWord {
private:
int k;
public:
PassWord(int);
char convert(const char); // 解密函數
};
此處'A'對應0, 'Z'對應25,好比像得到'C'的對應的值能夠使用'C' - 'A', 即爲2
屬於一個整數k,表明乘法密碼的密鑰,k<26。
屬於一個整數n,表明接下來輸入字符的個數,接着輸入n個字符
輸出描述輸出對應的密文
3 8 YHQLMUQI樣例輸出
ILOVEYOU
#include <iostream> using namespace std; char sec[1000]; class PassWord { private: int k; public: PassWord(int t); char convert(const char c); }; PassWord::PassWord(int t) { k = t; } char PassWord::convert(const char c) { int i = c - 'A'; for(int j = 0; ; ++ j) { int m = i + j * 26; if (m % k == 0 && m / k >= 0 && m / k < 26) { m /= k; return char(m + 'A'); } } } int main() { int k, n; cin >> k >> n; PassWord p(k); for (int i = 0; i < n; ++i) { char c; cin >> c; sec[i] = p.convert(c); } for (int i = 0; i < n; ++i) cout << sec[i]; cout << endl; system("pause"); return 0; }