1. 程式人生 > 其它 >P1125 [NOIP2008 提高組] 笨小猴

P1125 [NOIP2008 提高組] 笨小猴

技術標籤:演算法

注意判斷素數為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; }