P1125 [NOIP2008 提高组] 笨小猴
题目描述
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设 \text{maxn}maxn 是单词中出现次数最多的字母的出现次数,\text{minn}minn 是单词中出现次数最少的字母的出现次数,如果 \text{maxn}-\text{minn}maxn−minn 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。
输入格式
一个单词,其中只可能出现小写字母,并且长度小于 100100。
输出格式
共两行,第一行是一个字符串,假设输入的的单词是 Lucky Word,那么输出 Lucky Word,否则输出 No Answer;
第二行是一个整数,如果输入单词是 Lucky Word,输出 \text{maxn}-\text{minn}maxn−minn 的值,否则输出 00。
输入输出样例
输入 #1复制
error
输出 #1复制
Lucky Word
2
输入 #2复制
olympic
输出 #2复制
No Answer
0
说明/提示
【输入输出样例 1 解释】
单词 error 中出现最多的字母 \texttt rr 出现了 33 次,出现次数最少的字母出现了 11 次,3-1=23−1=2,22 是质数。
【输入输出样例 2 解释】
单词 olympic 中出现最多的字母 \texttt ii 出现了 11 次,出现次数最少的字母出现了 11 次,1-1=01−1=0,00 不是质数。
(本处原题面错误已经修正)
noip2008 提高第一题
#include <bits/stdc++.h> using namespace std; int main() { int cnt[128]={0},count=0,max=127,min=127,www=0,flag,k;//初始化一个数组cnt[128]={0} max,min char str[100];//输入字母 int i; cin.getline(str,100); for(i = 0; str[i]!='\0'; ++i) cnt[str[i]]++;//统计单个字母总数 sort(cnt,cnt+128);//排序 排序成1234 此时最后一位为maxn 第一位为minn for(i=128;i>=0;i--){ if(cnt[i]!=0) if(min>cnt[i]){ min=i; } }//找出第一位置 www=cnt[max]-cnt[min];//求出maxn-minn k=(int)sqrt((double)www);//开平方减少循环次数 for(i=2;i<=k;i++){ if(www%i==0){ break; } }//判断质数 if(i>k&&www>=2){ cout << "Lucky Word" << endl; cout << www; } else{ cout << "No Answer" << endl; cout << "0"; } return 0; }
P1075 [NOIP2012 普及组] 质因数分解
题目描述
已知正整数 nn 是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式
输入一个正整数 nn。
输出格式
输出一个正整数 pp,即较大的那个质数。
输入输出样例
输入 #1复制
21
输出 #1复制
7
说明/提示
1 \le n\le 2\times 10^91≤n≤2×109
NOIP 2012 普及组 第一题
#include<bits/stdc++.h> using namespace std; int main(){ int n,i,j; cin >> n; for(i=2;i<=n;i++){ if(n%i==0){//一个质数i j=n/i;//另一个质数j break; } }//判断质数 既然n是质数之积 则n=i*j if(i>j){ cout << i; } else{ cout << j; }//大小 }
P5743 【深基7.习8】猴子吃桃
题目描述
一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 nn 天早上起来一看,只剩下 11 个桃子了。请问小猴买了几个桃子?
输入格式
输入一个正整数 nn,表示天数。
输出格式
输出小猴买了多少个桃子。
输入输出样例
输入 #1复制
4
输出 #1复制
22
说明/提示
数据保证,1\le n\le201≤n≤20。
#include<bits/stdc++.h> using namespace std; int main(){ int n,k=1; cin >> n; while(n>1){ k=(k+1)*2; n--; } cout << k; }
1.最后剩一个 每次吃一半+1 逆推 即可
P5744 【深基7.习9】培训
题目描述
某培训机构的学员有如下信息:
姓名(字符串)
年龄(周岁,整数)
去年 NOIP 成绩(整数,且保证是 55 的倍数)
经过为期一年的培训,所有同学的成绩都有所提高,提升了 20\%20%(当然 NOIP 满分是 600600 分,不能超过这个得分)。
输入学员信息,请设计一个结构体储存这些学生信息,并设计一个函数模拟培训过程,其参数是这样的结构体类型,返回同样的结构体类型,并输出学员信息。
输入格式
第一行输入一个正整数 nn,表示学员个数。
第二行开始往下 nn 行。每行首先是一个字符串表示学员姓名,再是一个整数表示学员年龄,再是一个整数为去年 NOIP 成绩。
输出格式
输出 nn 行,每行首先输出一个字符串表示学生姓名,再往后两个整数,表示经过一年的培训后学员的年龄和他们今年的 NOIP 成绩。以空格隔开。
输入输出样例
输入 #1复制
3
kkksc03 24 0
chen_zhe 14 400
nzhtl1477 18 590
输出 #1复制
kkksc03 25 0
chen_zhe 15 480
nzhtl1477 19 600
说明/提示
数据保证,1 \leq n \leq 51≤n≤5。年龄为 0 \sim 1000∼100(含 00 与 100100)的整数。成绩为 0 \sim 6000∼600(含 00 与 600600)的 55 的整倍数。
#include<bits/stdc++.h> using namespace std; int main(){ struct{ string name; int age; int ni; }stu1; int n,i=1; cin >> n; while(i<=n){ int ages=0,nis=0; cin >> stu1.name >> stu1.age >> stu1.ni; ages=stu1.age+1; nis=stu1.ni*0.2+stu1.ni; if(nis>=600){ nis=600; } cout << stu1.name << " " << ages << " " << nis << endl; i++; } }
P5735 【深基7.例1】距离函数
题目描述
给出平面坐标上不在一条直线上三个点坐标 (x_1,y_1),(x_2,y_2),(x_3,y_3)(x1,y1),(x2,y2),(x3,y3),坐标值是实数,且绝对值不超过 100.00,求围成的三角形周长。保留两位小数。
对于平面上的两个点 (x_1,y_1),(x_2,y_2)(x1,y1),(x2,y2),则这两个点之间的距离 dis=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}dis=(x2−x1)2+(y2−y1)2
输入格式
输入三行,第 ii 行表示坐标 (x_i,y_i)(xi,yi),以一个空格隔开。
输出格式
输出一个两位小数,表示由这三个坐标围成的三角形的周长。
输入输出样例
输入 #1复制
0 0
0 3
4 0
输出 #1复制
12.00
说明/提示
数据保证,坐标均为实数且绝对值不超过 100100,小数点后最多仅有 33 位。
#include<bits/stdc++.h> using namespace std; int main(){ double a[10]; int i; double Perimeter=0.0,dis1=0.0,dis2=0.0,dis3=0.0; for(i=1;i<=6;i++){ cin >> a[i]; } dis1=sqrt((a[3]-a[1])*(a[3]-a[1])+(a[4]-a[2])*(a[4]-a[2])); dis2=sqrt((a[5]-a[3])*(a[5]-a[3])+(a[6]-a[4])*(a[6]-a[4])); dis3=sqrt((a[5]-a[1])*(a[5]-a[1])+(a[6]-a[2])*(a[6]-a[2])); Perimeter=dis1+dis2+dis3; printf("%.2lf",Perimeter); }
冲冲冲!!!有没有报名第十四届蓝桥杯C/C++组参赛选手,共同努力!!!💪