報紙頁數
來自:2016年七屆省賽大學C組真題(共8道題)
分析:? ? --畫出報紙長的樣子,如果我們在上面多畫一張報紙,那么就符合題意的5,6,11,12。
觀察這張圖:觀察3,4,9,10這一張報紙,怎么求出這份報紙一共多少頁呢?
3+10=13? ? ? 再用13-1就是這份報紙一共有的頁數。
公式:(最小頁碼+最大頁碼-1)
代碼:
#include <iostream>
using namespace std;
int main()
{// 請在此輸入您的代碼cout << 1125+1728-1;return 0;
}
等差素數列
來自:2017年八屆省賽大學B組真題(共8道題)
分析:
拓展一個知識:
長度為k的素數等差數列,它的公差d能被小于k的所有素數整除。
由上可知,長度為k的素數等差數列的最小公差為小于k的所有素數之積。
10以內的素數為2,3,5,7,所以2*3*5*7=210。
代碼:
#include <iostream>
using namespace std;
int main()
{// 請在此輸入您的代碼cout << 210;return 0;
}
乘積尾零
來自:2018年九屆省賽大學B組真題(共8道題)
分析:
乘積出現尾零,肯定是5和偶數相乘得到的,每出現一個10,就應從乘數中可以提出一個2、一個5。所以我們把每個數的都分解成乘積的形式 ,統計出2和5的數量,然后取較小那個。
(可以舉100*10的例子來推一下)
代碼:
#include <bits/stdc++.h>
using namespace std;
int main() {// 請在此輸入您的代碼int cnt2=0,cnt5=0; //統計數的,要初始化為0int a[100];for(int i=0; i<=99; i++) {cin >> a[i];while(a[i]%2==0) {cnt2++;a[i]/=2;}while(a[i]%5==0) {cnt5++;a[i]/=5;}}cout << min(cnt2,cnt5);return 0;
}
次數差
來自:2018年九屆省賽大學C組真題(共6道題)
+
代碼(分析在注釋中):
#include <bits/stdc++.h>
using namespace std;
int main() {// 請在此輸入您的代碼string str;cin >> str;int arr[26]= {0}; //全部初始化為0for(int i=0; i<(int)str.size(); i++) {//對于size函數來說,返回一個int或一個unsigned似乎都是合理的。但其實size函數返回的是一個string::size_type類型的值。arr[str[i]-'a']++;}sort(arr,arr+26);for(int i=0; i<26; i++) { //為什么要套一個for循環?因為有可能有的球隊一次也沒贏,題目中寫了不關心那些一次也沒獲勝的。//并且我們也是按哪個隊獲勝,然后放到相應的位置,有的位置根本沒有相應的++操作。if(arr[i]!=0) {cout << arr[25]-arr[i] << endl;break;}}return 0;
}
猴子分香蕉
來自:2018年九屆省賽大學C組真題(共6道題)
分析:因為是填空題,直接暴力求解即可。
代碼:
#include <iostream>
using namespace std;
int main() {// 請在此輸入您的代碼for(int i=1; i<=10000; i++) {int p=i;if(p%5==1) {p=p-p/5-1;if(p%5==2) {p=p-p/5-2;if(p%5==3) {p=p-p/5-3;if(p%5==4) {p=p-p/5-4;if(p%5==0 && p>0) { //這一步要加p >0 ,上面不需要加,上面不符合if判斷直接跳下一層循環了 cout << i;return 0;}}}}}}return 0;
}