Space Coconut Crab
メモり、メモる。の hatyone さんと一緒に組んでみました.
相変わらず,問題文に無駄が多いですd(・・;good!!
#include <iostream> #include <fstream> #include <cmath> using namespace std; int sum(int x, int y, int z) { return x + y*y + z*z*z; } int main() { // // ファイル // ifstream fin("a.in"); ofstream fout("a.out"); int e; while(true) { // // 入力 // int m = 2000000; fin >> e; if(e == 0) break; if(e != 1) { //cout << e << endl; // // 処理 // int x, y, z; x = y = z = 0; for(int i1 = 0; i1 < e; i1++) { x = i1; //cout << x << ", " << y << ", " << z << " = " << sum(x, y, z) << endl; if(x+y*y+z*z*z == e) { //cout << "#" << m << ", " << x+y*y+z*z*z << endl; if(m > x+y*y+z*z*z) { //cout << "##" << m << ", " << x+y*y+z*z*z << endl; m = x+y+z; } } if(sum(x, y, z) > e) break; for(int i2 = 0; i2 < e; i2++) { y = i2; //cout << " "; //cout << x << ", " << y << ", " << z << " = " << sum(x, y, z) << endl; if(x+y*y+z*z*z == e) { //cout << "#" << m << ", " << x+y*y+z*z*z << endl; if(m > x+y*y+z*z*z) { //cout << "##" << m << ", " << x+y*y+z*z*z << endl; m = x+y+z; } } if(sum(x, y, z) > e) { y = z = 0; break; } for(int i3 = 0; i3 < e; i3++) { z = i3; //cout << " "; //cout << x << ", " << y << ", " << z << " = " << sum(x, y, z) << endl; if(x+y*y+z*z*z == e) { //cout << "#" << m << ", " << x+y*y+z*z*z << endl; if(m > x+y*y+z*z*z) { //cout << "##" << m << ", " << x+y*y+z*z*z << endl; m = x+y+z; } } if(sum(x, y, z) > e) { z = 0; //break; } } } } } else { m = 1; } fout << m << endl; m = 2000000; } fin.close(); fout.close(); return 0; }