报纸页数
来自: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;
}