最大公约数(最小公倍数)&回文串组数统计

    xiaoxiao2023-03-16  2

    要求数的范围在[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; }
    转载请注明原文地址: https://ju.6miu.com/read-1152578.html
    最新回复(0)