本文共 1363 字,大约阅读时间需要 4 分钟。
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3768
打表暴力撸 答案最多只可能是三个数
#include #include #include using namespace std;typedef long long ll;typedef pair pii;map memo;int pls[20000];int main(){// freopen("data.in","r", stdin); int n, x, cnt = 0, ok; for(int sum = 0; sum <= 123456789;) { cnt++; sum += cnt; pls[cnt] = sum; memo[sum] = cnt; } scanf("%d", &n); while(n--) { scanf("%d", &x); if(memo[x]) {//1 printf("%d\n", memo[x]); }else { ok = 0; for(int i = 1; i <= cnt; i++)//2 { if(memo[x-pls[i]]) { printf("%d %d\n", i, memo[x-pls[i]]); ok = 1; break; } } if(!ok) { for(int i = 1; i <= cnt && !ok; i++)//3 { for(int j = 1; j <= cnt && !ok; j++) { if(memo[x-pls[i]-pls[j]]) { printf("%d %d %d\n", i, j, memo[x-pls[i]-pls[j]]); ok = 1; break; } } } } } } return 0;}
转载地址:http://hbhrb.baihongyu.com/