4 条题解
-
0Guest
-
1
#include<bits/stdc++.h> using namespace std; string a; int ma[10010]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; char b[10010]; bool zhi(int x){ if(x<=1) return 0; if(x==2) return 1; for(int i=2;i<=sqrt(x);i++) if(x%i==0) return 0; return 1; } int main() { int ans,maxn=0,minn=0,len; cin.getline(b,10010); len=strlen(b); sort(b,b+len); for(int i=0;i<=len;i++) { if(b[i]==b[i+1]) ma[maxn]++; if(b[i]!=b[i+1]) maxn+=1; } sort(ma,ma+maxn); /*for(int i=0;i<maxn;i++) { cout<<ma[i]<<' '; } cout<<'\n';*/ sort(ma,ma+maxn); ans=ma[maxn-1]-ma[0]; if(zhi(ans)==1) { cout<<"Lucky Word"; cout<<'\n'<<ans; } if(zhi(ans)==0) { cout<<"No Answer\n0"; } return 0; }
-
1
思路
写个判断质数的函数。 主程序里,先统计,找出最大和最小值,最后作差判断即可。
code
#include<bits/stdc++.h> using namespace std; int a[27]; bool f(int x){//判断质数 if(x<=1) return 0; if(x==2) return 1; for(int i=2;i<=sqrt(x);i++) if(x%i==0) return 0; return 1; } int main(){ string s; cin>>s; for(int i=0;i<s.size();i++){//统计 a[s[i]-'a']++; } int max=0,min=999; for(int i=0;i<26;i++){//找最大和最小 if(a[i]<min&&a[i]!=0) min=a[i]; if(a[i]>max) max=a[i]; } if(f(max-min)){//符合题意 cout<<"Lucky Word\n"; cout<<max-min; }else{//不符合 cout<<"No Answer\n0"; } return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int zhishu[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97}; char ch[27]; int a[27]; int main() { int maxn=0,minn=100,t=0; string s; cin>>s; for(int i=1;i<=26;i++) { ch[i]=96+i; } for(int i=0;i<=s.length();i++) { for(int j=1;j<=26;j++) { if(s[i]==ch[j]) { a[j]++; } } } for(int i=1;i<=26;i++) { maxn=max(a[i],maxn); } for(int i=1;i<=26;i++) { if(a[i]>0) { minn=min(a[i],minn); } } for(int i=0;i<=24;i++) { if(maxn-minn==zhishu[i]) { cout<<"Lucky Word"<<endl<<maxn-minn; t=1; break; } } if(t==0) { cout<<"No Answer"<<endl<<"0"; } return 0; }
-
0
#include <bits/stdc++.h> using namespace std;
int maxn(string s) { int num[27]={},q=0; char p; for(int i=0;i<s.size();i++) { p=s[i]; num[int (p-'a')]++; //cout<<"i="<<int(p-'a')<<endl; } int max=num[0]; //cout<<"num[0]="<<num[0]; for(int i=0;i<27;i++) { if(num[i]>max) { max=num[i]; q=num[i]; //cout<<"q="<<q<<endl; } } //cout<<"maxq="<<q; return q;
}
int minn(string s) { int num[27]={},q=0; char p; for(int i=0;i<s.size();i++) { p=s[i]; num[int (p-'a')]++; //cout<<"i="<<int(p-'a')<<endl; } int min; //cout<<"num[0]="<<num[0]; for(int i=0;i<27;i++) { if(num[i]!=0) { min=num[i]; q=num[i]; break; } } for(int i=0;i<27;i++) { if(min>num[i]&&num[i]!=0) { min=num[i]; q=num[i]; //cout<<"q="<<q<<endl; } } //cout<<"minq="<<q; return q;
}
bool sushu(int n) {
if(n==1||n<=0) { return 0; } else { for(int i=2;i*i<=n;i++) { if(n%i==0) { return 0; } } return 1; }
}
int main() { string s; int max,min; cin>>s; max=maxn(s); min=minn(s); if(sushu(max-min)==1) { cout<<"Lucky Word"<<endl; cout<<max-min; } if(sushu(max-min)==0) { cout<<"No Answer"<<endl; cout<<"0"; } return 0; }
- 1
信息
- ID
- 414
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 25
- 已通过
- 8
- 上传者