不同的幂值

这是Project Euler的29题,链接:https://projecteuler.net/problem=29

#include
#include
#include
#include
#include
using namespace std;

int main(){
     
    set<string> sp;
    int l = 2,h = 100;
    
    for(int i=l;i<=h;i++){
     
        map<int,int> mi;
        int k = i;
        while (k!=1)
        {
     
            for(int j=2;j<=k;j++){
     
                if(k%j==0){
     
                    if(mi.count(j)) mi[j]+=1;
                    else
                    {
     
                        mi[j] = 1;
                    }
                    k /= j;
                    break;  
                }
            }
        }
        vector<string> vs(h-l+1,"");
        for(auto m:mi){
     
            for(int n=l;n<=h;n++){
     
                vs[n-l] += to_string(m.first)+" "+to_string(n*m.second)+" ";
            }
        }
        for(auto s:vs){
     
            sp.insert(s);
        }
        
    }
    cout<<sp.size()<<endl;
    return 0;
}

你可能感兴趣的:(编程基础)