1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
#include<gmp.h>
#include<gmpxx.h>
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
int main(){
mpz_t a;
mpz_init(a);
string str;
char * c;
int size;
vector<int> vec;
unsigned long b;
mpz_t eachans;
mpz_init(eachans);
mpz_t anssum;
mpz_init(anssum);
mpz_t temp;
mpz_t anstemp;
mpz_init(anstemp);
mpz_set_ui(anstemp,0);
mpz_init(temp);
for(mpz_set_ui(a,1);mpz_cmp_ui(a,100)<0;mpz_add_ui(a,a,1)){
for(b=1;b<100;++b){
// cout<<"\nb: "<<b<<" a: ";
// mpz_out_str(NULL,10,a);
mpz_pow_ui(eachans,a,b);
//cout<<endl;
size=mpz_sizeinbase(eachans, 10) + 2;
c=new char[size];
mpz_get_str(c,10,eachans);
delete c;
mpz_set_ui(anssum,0);
// delete c;
for(int i=0;i<size;++i){
str=c[i];
mpz_set_str(temp,str.c_str(),10);
mpz_add(anssum,anssum,temp);
}
if(mpz_cmp(anssum,anstemp)>0){
mpz_set(anstemp,anssum);
cout<<"\nresult of "<<b<<" and ";
mpz_out_str(NULL,10,a);
}
}
}
cout<<endl<<"your answer: "<<endl;
mpz_out_str(NULL,10,anstemp);
system("pause");
return 0;
}
| |