今天又弄了两道题目。 这个memset要加<cstring>我老是给忘了…… 【name that number】 /* ID: wangqia6 TASK: namenum LANG: C++ */ #include <fstream> #include <cstring> #include <string> using namespace std; struct word { string name; long long func; }; long long make(string str) { long long ans=0; int len = str.size(); for (int i = 0; i < len; i++) switch (str[i]) { case 'A': case 'B': case 'C': ans = ans * 10 + 2; break; case 'D': case 'E': case 'F': ans = ans * 10 + 3; break; case 'G': case 'H': case 'I': ans = ans * 10 + 4; break; case 'J': case 'K': case 'L': ans = ans * 10 + 5; break; case 'M': case 'N': case 'O': ans = ans * 10 + 6; break; case 'P': case 'R': case 'S': ans = ans * 10 + 7; break; case 'T': case 'U': case 'V': ans = ans * 10 + 8; break; case 'W': case 'X': case 'Y': ans = ans * 10 + 9; break; default: return -1; } return ans; } int main() { const int DICT_LEN = 4617; ifstream dict; ifstream infile; ofstream outfile; dict.open("dict.txt"); infile.open("namenum.in"); outfile.open("namenum.out"); string str; word list[DICT_LEN]; for (int i = 0; i < DICT_LEN; i++) { dict >> str; list[i].name = str; list[i].func = make(str); } long long n; int flag = 0; infile >> n; for (int i = 0; i < DICT_LEN; i++) if (list[i].func == n) { outfile << list[i].name << endl; flag = 1; } if (!flag) outfile << "NONE" <<endl; dict.close(); infile.close(); outfile.close(); return 0; } 【palindromic squares】 /* ID: wanqia6 TASK: palsquare LANG: C++ */ #include <fstream> #include <cstring> #include <string> using namespace std; const string ALPHA="0123456789ABCDEFGHIJKLMNOPQRST"; ifstream infile; ofstream outfile; int base; void print(int n) { int len = -1,arr[25]; memset(arr,0,sizeof(arr)); while (n > 0) { len++; arr[len] = n % base; n /= base; } for (int i = len;i >= 0; i--) outfile << ALPHA[arr[i]]; } void check(int k) { int len = -1,n = k * k,arr[25]; memset(arr,0,sizeof(arr)); while (n > 0) { len++; arr[len] = n % base; n /= base; } for (int i = 0,j = len; i < j; i++,j--) if (arr[i] != arr[j]) return; print(k); outfile << ' '; for (int i = len;i >= 0; i--) outfile << ALPHA[arr[i]]; outfile << endl; } int main() { infile.open("palsquare.in"); outfile.open("palsquare.out"); infile >> base; for (int i = 1; i <= 300; i++) check(i); infile.close(); outfile.close(); return 0; }