要求数的范围在[1,2^32]
#include<iostream>
using namespace std;
unsigned long long getMaxGY(unsigned long long a,unsigned long long b)
{
unsigned long long m=a,n=b,c;
while(b!=0){
c=a%b;
a=b;
b=c;
}
return a;
}
int main()
{
unsigned long long a,b;
while(cin>>a>>b){
if(b>a)std::swap(a,b);
unsigned long long maxtmp = getMaxGY(a,b);
cout<<maxtmp<<" "<<a*b/maxtmp<<endl;
}
return 0;
}
判定一个字符串列表中可以组成回文串的组数
#include<iostream>
#include<string>
#include<vector>
#include<set>
#include<sstream>
#include<string.h>
using namespace std;
int ishuiwen(string &s)
{
int n = s.size();
int flag = 1;
for(int i=0;i<n/2;++i){
if(s[i]!=s[n-1-i]){
flag = 0;
break;
}
}
return flag;
}
int get_index_num(vector<string> &ves)
{
int n = ves.size();
set<string> s;
for(int i=0;i<n;++i)
{
for(int j=i+1;j<n;++j){
string tmp;
tmp = ves[i]+ves[j];
cout<<"string:"<<tmp<<endl;
int flag = ishuiwen(tmp);
cout<<"res:"<<flag<<endl;
string is,js;
stringstream ss;
ss<<i;
ss<<is;
ss<<j;
ss>>js;
cout<<is+"-"+js<<endl;
if(flag==1)s.insert(is+"-"+js);
tmp = ves[j]+ves[i];
cout<<"string:"<<tmp<<endl;
flag = ishuiwen(tmp);
cout<<"res:"<<flag<<endl;
cout<<js+"-"+is<<endl;
if(flag==1)s.insert(js+"-"+is);
}
}
return s.size();
}
int main()
{
int n;
cin>>n;
vector<string> ves;
for(int i=0;i<n;++i){
string tmp;
cin>>tmp;
ves.push_back(tmp);
}
cout<<get_index_num(ves)<<endl;
return 0;
}