PE 118-119 (dfs+暴力)

太过爱你忘了你带给我的痛 2022-07-10 17:25 270阅读 0赞

PE 118

题解:next_permutation()+dfs就可以了

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. int ans=0;
  5. vector<int>v;
  6. int isprime(ll n)
  7. {
  8. if(n==1)return 0;
  9. for(ll i=2;i*i<=n;i++){
  10. if(n%i==0)return 0;
  11. }
  12. return 1;
  13. }
  14. void dfs(int pos,ll now){
  15. if(pos>=9){
  16. if(ans<=10){
  17. //for(int i=0;i<9;i++)
  18. //cout<<v[i]<<" ";
  19. //cout<<endl;
  20. }
  21. ans++;return;
  22. }
  23. ll n = 0;
  24. while(pos < 9){
  25. n *= 10;
  26. n += v[pos];
  27. if(isprime(n) && n >= now){
  28. dfs(pos+1,n);
  29. }
  30. pos++;
  31. }
  32. }
  33. int main()
  34. {
  35. for(int i=1;i<=9;i++){v.push_back(i);}
  36. do{
  37. dfs(0,0);
  38. }while(next_permutation(v.begin(),v.end()));
  39. cout<<"ans="<<ans<<endl;
  40. return 0;
  41. }

PE 119

题解:暴力….

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long gao(int m,int n)
  4. {
  5. long long res=(long long)pow(m,n);
  6. long long ans=0;
  7. while(res)
  8. {
  9. ans+=res%10;
  10. res/=10;
  11. }
  12. return ans;
  13. }
  14. set<long long>s;
  15. int main()
  16. {
  17. for(int i=1;i<=100;i++)
  18. {
  19. for(int j=1;j<=100;j++)
  20. {
  21. if((long long)gao(j,i)==(long long)j)
  22. {
  23. s.insert(pow(j,i));
  24. }
  25. }
  26. }
  27. int num=1;
  28. for(set<long long>::iterator it = s.begin();it !=s.end();it++)
  29. {
  30. if(*it>=10)
  31. cout<<num++<<":"<<*it<<endl;
  32. }
  33. return 0;
  34. }

发表评论

表情:
评论列表 (有 0 条评论,270人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PE1-什么是pe

    PE是什么? PE即 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行体文件格式。它的一些特性继承自 Unix的 Coff 文