poj 2191
真恶心,真没想到最后是打表才能过。。。
//============================================================================ // Name : 2191.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <cstdio> #include <cmath> using namespace std; //int n, num, tag; //long long t, k; //int a[100]; //int isprime(int m){ // for(int i = 2;i <= sqrt(m);i++){ // if(m%i == 0) return 0; // } // return 1; //} // // //int main() { // freopen("a.txt", "r", stdin); // for(int i = 2;i <= 63;i++){ // if(isprime(i)){ // a[++num] = i; // } // } // while(scanf("%d", &n)!=EOF){ // for(int i = 1;a[i] <= n;i++){ // tag = 0; // k = pow(2, a[i])-1; // t = k; // for(long long j = 2;j <= sqrt(k);j++){ // while(t%j == 0){ // tag = 1; // if(t != j) printf("%lld * ", j); // else printf("%lld", j); // t /= j; // } // // } // if(tag == 1&&t!=1) printf("%lld", t); // if(tag == 1) printf(" = %lld = ( 2 ^ %d ) - 1\n", k, a[i]); // } // } // return 0; //} char s[9][100] = {"23 * 89 = 2047 = ( 2 ^ 11 ) - 1" ,"47 * 178481 = 8388607 = ( 2 ^ 23 ) - 1" ,"233 * 1103 * 2089 = 536870911 = ( 2 ^ 29 ) - 1" ,"223 * 616318177 = 137438953471 = ( 2 ^ 37 ) - 1" ,"13367 * 164511353 = 2199023255551 = ( 2 ^ 41 ) - 1" ,"431 * 9719 * 2099863 = 8796093022207 = ( 2 ^ 43 ) - 1" ,"2351 * 4513 * 13264529 = 140737488355327 = ( 2 ^ 47 ) - 1" ,"6361 * 69431 * 20394401 = 9007199254740991 = ( 2 ^ 53 ) - 1" ,"179951 * 3203431780337 = 576460752303423487 = ( 2 ^ 59 ) - 1"}; int n, t; int main(){ while(scanf("%d", &n)!=EOF){ if(n < 11) t = 0; else if(n >= 11&&n < 23) t = 1; else if(n >= 23&&n < 29) t = 2; else if(n >= 29&&n < 37) t = 3; else if(n >= 37&&n < 41) t = 4; else if(n >= 41&&n < 43) t = 5; else if(n >= 43&&n < 47) t = 6; else if(n >= 47&&n < 53) t = 7; else if(n >= 53&&n < 59) t = 8; else if(n >= 59) t = 9; for(int i = 0;i < t;i++){ printf("%s\n", s[i]); } } return 0; }