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

来源:互联网 发布:dnf韩服倍率后技能数据 编辑:程序博客网 时间:2024/05/21 08:49

要求数的范围在[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;}
0 0
原创粉丝点击