*1407笨小猴(Noip2008提高組第1題)
阿新 • • 發佈:2017-12-17
false pen 。。 max 養成 cstring || size 實現
題目鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1407
一看題so easy,看題審題到寫代碼用了25分鐘,瞬間出現如下代碼,樣例輕松過,順便註釋了思路
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 char a[120]; 5 int al,maxn=0,minn=1,m=1; 6 //m記錄字母出現的次數 7 bool iss(int x) 8 { 9 if (x==1||x==0)return false;//註意素數判斷時這一行是不可缺少的10 for(int i=2;i*i<=x;i++) 11 if(x%i==0)return false; 12 return true; 13 } 14 int main() 15 { 16 gets(a); 17 al=strlen(a); 18 for(int i=0;i<al-1;i++) 19 { 20 char b=a[i]; 21 for(int j=i+1;j<al;j++) 22 { 23 if(b==a[j])m++; 24 if(m>maxn)maxn=m; 25 if(m<minn)minn=m; 26 } 27 m=1;//恢復m的初始值 28 } 29 30 //cout<<maxn<<minn; 31 //上一行用於測試讀取單詞中字母數字是否正確,如果正確將其註釋掉繼續往下寫,從而實現模塊話 32 if(iss(maxn-minn))cout<<"Lucky Word"<<endl<<maxn-minn; 33 else cout<<"No Answer"<<endl<<"0"; 34 35 return 0; 36 }
然而。。。悲劇悄然發生。。。
what the fuck?..
默默冷靜3分鐘後發現
原來是第16行調用了gets(),代碼中卻沒有包含頭文件#include<cstdio>,wtf?wtf?wtf?
但我用dev編譯通過了,然並卵。。是什麽問題呢?
因為dev作為ide為了方便用戶使用,會默認給代碼中增加一些函數,#include<cstdio>被默認添加進去了。。
so 在本地編譯時沒有問題,但在系統端提交出現編譯錯誤,這是NOIP階段經常出現的小問題,so,兩種方式可以避免:
1.使用linux系統guide
2.平時養成頭文件與使用一一對應的好習慣
修改代碼後如下(點擊加號展開):
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 char a[120]; 6 int al,maxn=0,minn=1,m=1; 7 //m記錄字母出現的次數 8 bool iss(int x) 9 { 10 if (x<2)return false;//註意素數判斷時這一行是不可缺少的 11 else 12 { 13 for(int i=2;i*i<=x;i++) 14 if(x%i==0)return false; 15 } 16 17 return true; 18 } 19 int main() 20 { 21 gets(a); 22 al=strlen(a); 23 for(int i=0;i<al-1;i++) 24 { 25 char b=a[i]; 26 for(int j=i+1;j<al;j++) 27 { 28 if(b==a[j])m++; 29 if(m>maxn)maxn=m; 30 if(m<minn)minn=m; 31 } 32 m=1;//恢復m的初始值 33 } 34 35 //cout<<maxn<<minn; 36 //上一行用於測試讀取單詞中字母數字是否正確,如果正確將其註釋掉繼續往下寫,從而實現模塊話 37 if(iss(maxn-minn))cout<<"Lucky Word"<<endl<<maxn-minn; 38 else cout<<"No Answer"<<endl<<"0"; 39 40 return 0; 41 }View Code
然而,達到AC過程是艱難曲折的:
再次修改代碼如下:
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 char a[120]; 6 int al,maxn=0,minn=1,m=0; 7 //m記錄字母出現的次數 8 bool iss(int x) 9 { 10 if (x<2)return false;//註意素數判斷時這一行是不可缺少的 11 else 12 { 13 for(int i=2;i*i<=x;i++) 14 if(x%i==0)return false; 15 } 16 17 return true; 18 } 19 int main() 20 { 21 gets(a); 22 al=strlen(a); 23 for(int i=0;i<al;i++) 24 { 25 char b=a[i]; 26 for(int j=0;j<al;j++) 27 { 28 if(b==a[j])m++; 29 } 30 if(m>maxn)maxn=m; 31 if(m<minn)minn=m; 32 m=0;//恢復m的初始值 33 } 34 35 // cout<<al<<maxn<<minn; 36 //上一行用於測試讀取單詞中字母數字是否正確,如果正確將其註釋掉繼續往下寫,從而實現模塊話 37 if(iss(maxn-minn))cout<<"Lucky Word"<<endl<<maxn-minn; 38 else cout<<"No Answer"<<endl<<"0"; 39 40 return 0; 41 }
仍然是:
*1407笨小猴(Noip2008提高組第1題)