CHAPTER 1 结业啦! 【number triangles】 /* ID: wangqia6 TASK: numtri LANG: C++ */ #include <fstream> using namespace std; long data[1001][1001],ans[1001][1001]; long get_max(long a,long b) { return a > b ? a : b; } int main() { ifstream infile; ofstream outfile; infile.open("numtri.in"); outfile.open("numtri.out"); int n; infile >> n; for (int i = 0; i < n; i++) for (int j = 0; j <= i; j++) infile >> data[i][j]; ans[0][0] = data[0][0]; for (int i = 1; i < n; i++) { ans[i][0] = data[i][0] + ans[i - 1][0]; ans[i][i] = data[i][i] + ans[i - 1][i - 1]; for (int j = 1; j < i; j++) ans[i][j] = data[i][j] + get_max(ans[i - 1][j - 1],ans[i - 1][j]); } long tmp = -1; for (int i = 0; i < n; i++) if (ans[n - 1][i] > tmp) tmp = ans[n - 1][i]; outfile << tmp << endl; infile.close(); outfile.close(); return 0; } 【superprime rib】 /* ID: wangqia6 TASK: sprime LANG: C++ */ #include <fstream> #include <cstdlib> using namespace std; ifstream infile; ofstream outfile; int n; long long sqr(long long x) { return x * x; } long long mod_pow(long a,long n,long m) { if (n == 0) return 1 % m; else if (n == 1) return a % m; else if (! (n & 1)) return sqr(mod_pow(a,n >> 1,m)) % m; else if (n & 1) return (sqr(mod_pow(a,n >> 1,m)) % m) * a % m; } bool miller_rabin(long x) { long a; for (int i = 0; i < 5; i++) { a = (rand() % (x - 1)) + 1; if (mod_pow(a,x - 1,x) != 1) return false; } return true; } void dfs(long x,int dep) { if (! miller_rabin(x)) return; if (dep == n) { outfile << x << endl; return; } dfs(x * 10 + 1,dep + 1); dfs(x * 10 + 3,dep + 1); dfs(x * 10 + 7,dep + 1); dfs(x * 10 + 9,dep + 1); return; } int main() { infile.open("sprime.in"); outfile.open("sprime.out"); infile >> n; dfs(2,1); dfs(3,1); dfs(5,1); dfs(7,1); infile.close(); outfile.close(); return 0; }