64,651
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<vector>
#include<string>
#include<stdlib.h>
#include<sstream>
#include<time.h>
#include<list>
#include<algorithm>
using namespace std;
class Test{
private:
vector<int> receive;
int result;
public:
Test::Test(vector<int>& it):result(0),receive(it){};
bool happynum(string);
void process();
friend ostream& operator<<( ostream& out,const Test& test);
};
bool Test::happynum(string rec) //判断是否开心数
{
if(rec.size()==1&&rec[0]==1)
return 1;
else if(rec.size()==1&&rec[0]!=1)
return 0;
else
{ int result=0;
for(string::size_type size=0;size!=rec.size();++size)
result+=rec[size]*rec[size];
happynum(itoa(result,const_cast<char *>(rec.c_str()),10));}
}
void Test::process()
{
result=receive.back();
string str;
while(1)
{
int test1=0;
for(vector<int>::iterator itor=receive.begin();itor!=receive.end();++itor)
{
if(!happynum(itoa(result,const_cast<char *>(str.c_str()),*itor)))
break;
else ++test1;
}
if(test1==receive.size())
break;
else ++result;
}
}
ostream& operator<<( ostream& out,const Test& test)
{
out<<test.result<<flush;
return out;
}
int main()
{
int time;
cin>>time;
vector<Test> test;
cin.get();
for(int a=0;a!=time;++a)
{
string rec;
int x;
vector<int> receive;
getline(cin,rec);
istringstream stream(rec);
while(stream>>x)
receive.push_back(x);
test.push_back(Test(receive));
cin.get();
}
for(vector<Test>::iterator itor=test.begin();itor!=test.end();++itor)
{
itor->process();
cout<<"case #"<<itor-test.begin()+1<<": "<<*itor<<endl;
}
system("pause");
return 0;
}
#include<iostream>
#include<vector>
#include<string>
#include<stdlib.h>
#include<sstream>
#include<time.h>
#include<list>
#include<algorithm>
#include <string.h>
using namespace std;
class Test{
private:
vector<int> receive;
int result;
public:
Test::Test(vector<int>& it):result(0),receive(it){};
bool happynum(int data, int base); //bool happynum(string);
void process();
friend ostream& operator<<( ostream& out,const Test& test);
};
/*
bool Test::happynum(string rec, int base) //错 bool Test::happynum(string rec) //判断是否开心数
{
if(rec.size()==1&&rec[0]=='1') //错 if(rec.size()==1&&rec[0]==1)
return 1;
else if(rec.size()==1&&rec[0]!='1') //错 else if(rec.size()==1&&rec[0]!=1)
return 0;
else
{
int result=0;
for(string::size_type size=0;size!=rec.size();++size)
result+=(rec[size]-'0') * (rec[size]-'0'); //错 result+=rec[size]*rec[size];
//错 happynum(itoa(result,const_cast<char *>(rec.c_str()),10));}
return happynum(itoa(result,const_cast<char *>(rec.c_str()), base), base);
}
}
*/
bool Test::happynum(int init, int base)
{
char rec[100];
bool used[1000];
for (int i=0; i<1000; i++) used[i]=false;
int result = init;
for (;;)
{
if (result==1) return true;
itoa(result, rec, base);
result=0;
for(int j=0; rec[j]; ++j)
result+=(rec[j]-'0') * (rec[j]-'0');
if (used[result]) return false;
used[result]=true;
}
}
void Test::process()
{
result=receive.back();
//错 string str;
while(1)
{
int test1=0;
for(vector<int>::iterator itor=receive.begin();itor!=receive.end();++itor)
{
//错 if(!happynum(itoa(result,const_cast<char *>(str.c_str()),*itor)))
if(!happynum(result, *itor))
break;
else ++test1;
}
if(test1==receive.size())
break;
else ++result;
}
}
ostream& operator<<( ostream& out,const Test& test)
{
out<<test.result<<flush;
return out;
}
int main()
{
int time;
cin>>time;
vector<Test> test;
cin.get();
for(int a=0;a!=time;++a)
{
string rec;
int x;
vector<int> receive;
getline(cin,rec);
istringstream stream(rec);
while(stream>>x)
receive.push_back(x);
test.push_back(Test(receive));
//错 cin.get();
}
for(vector<Test>::iterator itor=test.begin();itor!=test.end();++itor)
{
itor->process();
cout<<"case #"<<itor-test.begin()+1<<": "<<*itor<<endl;
}
system("pause");
return 0;
}