C/C++之(三)洛谷刷题基础 下

简介: C/C++之(三)洛谷刷题基础 下

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++组参赛选手,共同努力!!!💪

相关文章
|
算法 C语言 C++
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
277 0
|
存储 C++
【五一创作】C++刷题 【入门4】数组
【五一创作】C++刷题 【入门4】数组
131 0
|
6月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
6月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
7月前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
7月前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
89 1
|
存储 C语言 C++
【C/C++刷题——leetcode】查找字符串中最大的子串
【C/C++刷题——leetcode】查找字符串中最大的子串
334 0
|
机器学习/深度学习 人工智能 C++
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
192 0
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
|
存储 算法 C++
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
360 0
|
7月前
|
C++
C++刷题ACM输入数组
C++刷题ACM输入数组
75 0