首页 > 学院 > 开发设计 > 正文

PE 118-119 (dfs+暴力)

2019-11-08 03:02:47
字体:
来源:转载
供稿:网友

PE 118

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

代码:

#include<bits/stdc++.h>using namespace std;typedef long long ll;int ans=0;vector<int>v;int isPRime(ll n){	if(n==1)return 0;	for(ll i=2;i*i<=n;i++){		if(n%i==0)return 0;	}	return 1;}void dfs(int pos,ll now){	if(pos>=9){		if(ans<=10){			//for(int i=0;i<9;i++)			//cout<<v[i]<<" ";			//cout<<endl;		}				ans++;return; 	}	ll n = 0;	while(pos < 9){		n *= 10;		n += v[pos];		if(isprime(n) && n >= now){			dfs(pos+1,n);		}		pos++;	}}int main(){	for(int i=1;i<=9;i++){v.push_back(i);}	do{		dfs(0,0);	}while(next_permutation(v.begin(),v.end()));	cout<<"ans="<<ans<<endl;	return 0;}PE 119

题解:暴力....

代码:

#include<bits/stdc++.h>using namespace std;long long gao(int m,int n){	long long  res=(long long)pow(m,n);	long long ans=0;	while(res)	{		ans+=res%10;		res/=10;	}	return ans;}set<long long>s;int main(){		for(int i=1;i<=100;i++)	{		for(int j=1;j<=100;j++)		{			if((long long)gao(j,i)==(long long)j)			{			    s.insert(pow(j,i));			}		}	}	int num=1;	for(set<long long>::iterator it = s.begin();it !=s.end();it++)	{		if(*it>=10)		cout<<num++<<":"<<*it<<endl;	}	return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表