SDAU2019新生赛总结

ZJH学长的茶叶

题目

Description
ZJH学长非常喜欢喝茶,也经常买各种各样的茶叶。ZJH总是抱怨自己的钱不知道花哪去了。现在给出ZJH本学期买的每种茶叶的数量和价格,请你帮ZJH学长算出他每月买茶叶花了多少钱。
Input
第一行输入一个整数n(1<=n<=1000),表示ZJH每月买的茶叶的种类数量。接下来n行每行输入两个整数m和p(1<=m,p<=100000),表示每种茶叶的数量和单价。
** Output**
输出一个整数,表示学长本学期买茶叶花的钱数。
Sample Input 1
3
5 10
6 8
5 1
Sample Output 1
103

【题解】

#include<iostream>
using namespace std;
int main()
{
 int n,i;
 long long a[1005][2];//注意数据类型
 long long t, s=0;
 cin >> n;
 for (i = 0; i < n; i++)
  cin >> a[i][0] >> a[i][1];
 for (i = 0; i < n; i++)
 {
  t = a[i][0] * a[i][1];
  s += t;
 }
 cout << s;
 return 0;
}

以贰之名

Description
众所周知,DV学长和TYY学长是关系非常好的基友,他们经常以“儿子“互称。有一天DV学长给TYY学长出了一道题,如果TYY学长解出了这道题就可以拥有一半的糖果,否则DV学长将吃掉所有的糖果。TYY学长非常想吃到糖果,你能帮帮她嘛?
具体来说:现在有从2到n这n-1个的数,现在要删除若干个数,使得剩下的数中,一定有一个数能被剩下的数整除,问最少要删除多少个数? Input 输入只有一个数n,表示有2~n这n-1个数(1<=n<=1e9)
Output 需要最少删除的数的个数。
Sample Input 1
5
Sample Input 2
4
Sample Input 3
3
Sample Outout 1
2
Sample Output 2
1
Sample Outout 3
1
Hint
n=5时,有2、3、4、5这四个数,删掉3、5后,才能保证有一个数2能被剩下的数2、4整除

分析
由于是从2开始,所以只要删去2~n这n-1个数中的奇数即可

【题解】
1.错误解法

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

由于数据太大,遍历所需的时间过长,会导致部分测试点超时

2.正解

#include<iostream>
using namespace std;
int main()
{
 long long n,k;
 cin >> n;
 k = n / 2;//求出偶数个数
 cout << n-k-1;//注意数据是从2开始的,需要减掉1
 return 0;
}

经过找规律发现,n/2恰好为偶数个数,则奇数个数为n-n/2,须要特别注意的是1并不在范围内,所以奇数个数减1

爱出简单题的SL学长

题目

Description
SL学长特别喜欢给别人出一些奇奇怪怪的问题。这天他又在训练室给大家出了一道题,你能帮忙解答嘛?
题目:如果1== 5;2== 10;3== 25;4== 125;那么5==???
Input

Output
输出5等于多少
Sample Input 1
(无)
Sample Output 1
(如上所述)
Hint
如果你在想找规律,看看如果后面是什么

分析
这是一道签到题,好好读题就能搞定

【题解】

#include<iostream>
using namespace std;
int main()
{
 cout << '1';
 return 0;
 }

准备去爬莫干山的徐老爷

题目

Description
在某饼同学中午吃完方形大饼后,下午去找徐老爷爬莫干山,但秃头的徐老爷在实验室的空调屋里沉迷于"角谷猜想"无法自拔,非要做完题后再跟某饼同学爬莫干山,你能帮帮他吗?
所谓角古猜想是指,对于任意一个正整数n,有规则:1)若n是奇数,那么对n乘3加1;2)若n是偶数,那么对n除以2。得到的结果再按照上述规则重复处理,最终总能够得到1。例如:给定n=5,计算过程分别为16、8、4、2、1。要求输入一个整数n,将经过处理得到1的过程输出来。
Input
一个正整数N(0 < N ≤ 2,000,000)。
Output
从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。
Sample Input 1
5
Sample Output 1
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End

分析
此题是一个原题,较为简单

【题解】

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n!=1)
    {
    if(n%2!=0)
    	{
    		cout<<n<<"*3+1="<<3*n+1<<endl;
    		n=3*n+1;
    	}
    if(n%2==0)
   	{
    		cout<<n<<"/2="<<n/2<<endl;
    		n=n/2;
    	}
    }
    cout << "End" << endl;
    return 0;
}

太极阴阳鱼

Description
茄子同学最近在上“中国文化概论”,对老师讲的太极图非常感兴趣,一个太极图有两条阴阳鱼拼成,阴阳鱼的头部各由一个半圆组成,正常的太极图时如下图。
这是小机灵鬼茄子同学灵机一动,他想水平移动阴阳鱼中的交点P(如下图),得使阴阳鱼的头部长度之比为a:b,以下图为例,两个长度之比为3:7。现在他很好奇两条阴阳鱼的面积之比Sa:Sb。(深色部分面积为Sa,浅色部分面积为Sb)
Input
有多组输入每组输入两个正整数a,b,(1<=a,b<=10^9) Output 每组输出阴阳鱼面积的之比Sa/Sb结果保留六位小数
Sample Input 1
1 1
3 3
5 2
Sample Output 1
1.000000
1.000000
2.500000
在这里插入图片描述

分析
这是一道数学分析题,通过观察可以发现Sa和Sb的计算公式,然后相比并化简的面积之比为a/b。

【题解】

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
 long long a,b;
 long double s;
 while (cin >> a >> b)
 {
  s = 1.0 * a / b;
  cout << fixed << setprecision(6) << s;
 }
 return 0;
}

未完待续~

发布了13 篇原创文章 · 获赞 17 · 访问量 330

猜你喜欢

转载自blog.csdn.net/SDAU_LGX/article/details/103752255