P1125 [NOIP2008 提高組] 笨小猴
阿新 • • 發佈:2021-01-13
技術標籤:演算法
注意判斷素數為0的情況
#include<bits/stdc++.h>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
char a[1000];
int prime[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};//素數
cin>>a;
int len=strlen (a);
sort(a,a+len); //將輸入進來的數字排序
int k=0,sum[1000]={0};
for(int i=0;i<len;i++){
if(a[i]==a[i+1]){
sum[k]++; //排完序之後所有相同的字元都在一起了
}else{ //所以直接判斷他和後面的字元是不是親兄弟!如果是,將他們加1
sum[k++]++; //如果下一個不是親兄弟,將這組最後一個好兄弟加進去,並且下標++
}
}
sort(sum,sum+k); //將獲取到的陣列做排序,sum[0]肯定是出現次數最少的也就是mmin
int i=24; //而陣列的最後以為也就是出現字元最多的出現次數
while(i>=0){
if(prime[i--]==sum[k-1]-sum[0]){ //將最多的減去最少的 判斷他們的差是不是素數
cout<<"Lucky Word"<<endl;
cout<<sum[k-1]-sum[0];
return 0;
}
}
cout<<"No Answer"<<endl;
cout<<0;
return 0;
}