蓝桥杯——密码发生器
第一步:将字符串转换为一行只有6个字母的二维数组
第二步:将每一列单独加起来
第三部:递归处理数据直至只剩个位数
代码:
#include<iostream> #include<string> using namespace std; int toOnenum(int n) { int sum = 0; if (n / 10 == 0) { return n; } else { while (n) { sum += n % 10; n /= 10; } return toOnenum(sum); } } void change(int num[6]) { for (int i = 0; i < 6; i++) { cout << toOnenum(num[i]) << ' '; } cout << endl; } int main() { int n; cin >> n; string *arr; arr = new string[n]; cin.get(); for (int i = 0; i < n; i++) { getline(cin, arr[i]); } for (int i = 0; i < n; i++) { string buf = arr[i]; int x = buf.length() / 6 + 1; string *str = new string[x]; int z = 0; for (int j = 0; j < x; j++) { for (int k = 0; k < 6 && buf[z]; z++, k++) { str[j] += buf[z]; } } for (int c = 0; c < x; c++, cout << endl) { cout << str[c]; } int num[6] = { 0, 0, 0, 0, 0, 0 }; for (int m = 0; m < x; m++) { for (int n = 0; n < str[m].length(); n++) { num[n] += str[m][n]; } } change(num); } return 0; }