表示9楼,10楼的分析很精辟
我来贴个代码
我来贴个代码
程序代码:
/***************************** Input: (k,N) | Ctrl+Z to end Output: ans | "Error!" | "Valid!" | "Exit." *****************************/ #include <iostream> #include <bitset> using namespace std; typedef unsigned long ulong; typedef unsigned int uint; ulong An(uint k = 3, uint N = 100); int main() { uint k = 0, N = 0; ulong ans = 0; while(1){ cout << "IN: " << flush; cin.sync(); cin >> k >> N; if(!cin){ if(cin.eof()){ cout << "OUT: Exit." << endl; return 0; } else{ cin.clear(); cout << "OUT: Error!" << endl; continue; } } if(ans = An(k, N)){ cout << "OUT: " << ans << endl; } else{ cout << "OUT: Valid!" << endl; } } return 0; } ulong An(uint k, uint N) { if(!((k >= 3 && k <= 15) && (N >= 10 && N <= 1000))) return 0; ulong sum(0), temp(1); bitset<10> coef(N); for(int i = 0; i < 10; i++){ if(coef[i]) sum += temp; temp *= k; } return sum; }
人生是一场错过 愿你别蹉跎