zl程序教程

您现在的位置是:首页 >  其他

当前栏目

弹指间计算机协会 X Five Pines Robomaster实验室 考核题面与题解(一)

2023-03-14 22:34:50 时间

大一组

绩点

Description

阿杰在大一学习了C++入门课程,这门课程的总绩点计算方法为:

总绩点=作业分数× 20% +小测分数× 30% +期末考试分数× 50%

阿杰想知道,这门课程的最终绩点。

Input

输入只有1行,包含三个非负整数A、B、C,分别表示阿杰的作业成绩、小测

分数和期末考试分数。相邻两个数之间用一个空格隔开,三项分数满分都是100分。

Output

输出只有1行,包含一个整数,即阿杰这门课程的总绩点,满分也是100分。

Sample Input 1

100 100 80

Sample Output 1

90

Sample Input 2

60 90 80

Sample Output 2

79

代码

#include<iostream>
using namespace std;
int a,b,c;
int main(){
    cin>>a>>b>>c;
    int res=0.2*a+0.3*b+0.5*c;
   cout<<res<<endl;
  return 0;
}

字符串统计

Description

给定一个字符串,要求统计字符串的字符

注意:字符串中可能包含大、小写英文字母、数字字符、空格和换行符。统计字符串字符数时,空格和换行符不计算在内。

Input

输入只有一行,一个字符串s。

Output

输出只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。

Sample Input 1

234

Sample Output 1

3

Sample Input 2

Ca 45

Sample Output 2

4

Hint

【输入输出样例2说明】

字符串中共有5个字符,包括1个大写英文字母,

1个小写英文字母和2个数字字符,

还有1个空格。由于空格不计入结果中,故标题的有效字符数为4个。

【数据规模与约定】

规定|s|表示字符串s的长度(即字符串中的字符和空格数)。

对于40%的数据,1 ≤ |s| ≤ 5,保证输入为数字字符及行末换行符。

对于80%的数据,1 ≤ |s| ≤ 5,输入只可能包含大、小写英文字母、数字字符及行末换行符。

对于100%的数据,1 ≤ |s| ≤ 5,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。

代码

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    string s;
    getline(cin,s);
    int res=0;
    for(int i=0;i<s.size();i++)
      if (s[i]!=' '&&s[i]!='
')
        res++;
    cout<<res;
  return 0;
}

报销

Description

Min找老师报销费用。第一天,Min给老师一张发票;

之后两天(第二天和第三天),每天给老师两张发票;

之后三天(第四、五、六天),每天给老师三张发票;

之后四天(第七、八、九、十天),每天给老师四张发票……;

这种报销模式会一直这样延续下去:当连续N天每天收到N张发票后,老师会在之后的连续N+1天里,每天收到N+1张发票。

请计算在前K天里,老师一共获得了多少发票。

Input

输入只有1行,包含一个正整数K,表示上交发票的天数。

Output

输出只有1行,包含一个正整数,即老师收到的发票数。

Sample Input 1

5

Sample Output 1

11

Sample Input 2

1000

Sample Output 2

29820

Hint

【输入输出样例1说明】

老师第一天收到一张发票;第二天和第三天,每天收到两张发票;第四、五天,

每天收到三张发票。因此一共收到1+2+2+3+3=11张发票。

【数据说明】

对于100%的数据,1≤K≤10,000。

代码

#include<iostream>
using namespace std;
int n;
long long res=0;
int main(){
    cin>>n;
    int j=0,k=0;
    for(int i=1;i<=10000&&i<=n;i++)
        for(int j=0;j<i&&k<n;j++,k++)
            res+=i;
  cout<<res;
}

质因数分解

Description

已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。

Input

输入只有一行,包含一个正整数n。

Output

输出只有一行,包含一个正整数p,即较大的那个质数。

Sample Input 1

21

Sample Output 1

7

Hint

对于60%的数据,6 ≤ n ≤ 1000。

对于100%的数据,6 ≤ n ≤ 2 × 10 9 2 imes {10}^92×109

代码

#include<iostream>
using namespace std;
int main(){
    long long n;
    cin>>n;
    for(long long i=2;i*i<=n;i++){
        if (n%i==0){
            cout<<n/i;
            return 0;
        }
    }
} 

骨牌(此题已砍)

Description

在一个有2 ∗ n 2*n2∗n个格子的大长方形槽内放置1 ∗ 2 1*21∗2的小骨牌,骨牌可以横放可以竖放,有多少种不同的放置方式可以将大长方形槽填满?

例如,当n = 3 n=3n=3时,一共有3种方式。

image

Input

输入只有一行,包含一个正整数n。

Output

输出只有一行,包含一个正整数res,即结果

Sample Input 1

3

Sample Output 1

3

Hint

对于100%的数据,1 ≤ n ≤ 50

题解

当n = 1 n=1n=1,有且只有一种摆法

当n = 2 n=2n=2,可以两个横放,也可以两个竖放,有二种摆法

当n = 3 n=3n=3,可以由n = 2 n=2n=2的情况再竖放一个骨牌得到,也可以由n = 1 n=1n=1的情况再横放两个骨牌得到(不能竖放两个骨牌,会与n = 2 n=2n=2的情况重复)。

以此类推,fn=fn−1+fn−2

代码

#include<iostream>
using namespace std;
long long f[55];
int main(){
    f[1]=1;
    f[2]=2;
    int n;
    cin>>n;
    for(int i=3;i<=n;i++)
        f[i]=f[i-1]+f[i-2];
    cout<<f[n];
    return 0;
}

复数

image.png

Sample Input 1

1 2 3 4

Sample Output 1

4+6i
-2-2i
-5+10i

Sample Input 2

1 0 1 1