洛谷_分支循环

p2433

问题 5

甲列火车长 260 米,每秒行 12 米;乙列火车长220 米,每秒行 20 米,两车相向而行,从两车车头相遇时开始计时,多长时间后两车车尾相离?已知答案是整数。

计算方式:两车车长相加除以两车速度之和

问题10

洛谷的评测任务是单位时间内均匀增加的。8 台评测机 30 分钟可以刚好把评测队列中的程序评测完毕,10 台评测机 6 分钟可以刚好把评测队列中的程序评测完毕,请问几台评测机可以在 10 分钟时刚好把评测队列中的程序评测完毕?

这个题需要现设初始评测任务x,设每分钟均匀增加y的测评任务,列两个二元一次方程即可

p5711

闰年的判断:1,可以被四整除,但不能被100整除。2,被400整除

补充:闰年2月29天,非闰年2月28天;其他月份1,3,5,7,8,10,12月份31天,剩余月份30天

p5714 

BMI:m/h^2

cout输出浮点型默认保留6位有效数字

p5715 

给出三个整数 a,b,c(0≤a,b,c≤100)a,b,c(0≤a,b,c≤100),要求把这三位整数从小到大排序 

三种方法:

swap交换函数:

int a,b,c;
cin>>a>>b>>c;
if(a>b)swap(a,b);
if(b>c)swap(b,c);
if(a>b)swap(a,b);

 这种适合三个以下排序,个数多了就比较麻烦;

sort排序:

#include
int a[4];
cin>>a[1]>>a[2]>>a[3];
sort(a+1,a+4);//参数是地址,左闭右开

 冒泡排序:

#include
using namespace std;
int main() {
	int a[3];
	int tmp;
	for (int i = 0; i < 3; i++) {
		cin >> a[i];
	}
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3 - 1 - i; j++) {
			if (a[j] > a[j + 1]) {
				tmp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = tmp;
			}
		}
	}
	for (int i = 0; i < 3; i++) {
		cout << a[i] << ' ';
	}
	return 0;
}

 冒泡排序代码虽然长,但稳定,而且适用于大量数据的排序

p1085

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

找出最大值容易,一开始的思路没想到如何找出下标,后来想到直接定义个变量index,每次更改最大值时,令index等于下标就可以了

p1424 

有一只小鱼,它平日每天游泳 250 公里,周末休息(实行双休日),假设从周 x 开始算起,过了 n 天以后,小鱼一共累计游泳了多少公里呢?

本人刚做起来很吃力的一道,因为我是想用对n求余的方式计算今天是周几,发现寄l,一直构思不出来,题解里很不错的回答

#include //包含了所有C++头文件的头文件
using namespace std;
int main()
{
    unsigned long long n,ans=0; //坑就坑在这儿。天数都那么大了,总路程还会小吗???
    int x;
    cin >> x >> n; //输入星期和持续天数
    for(int i=0;i

 循环n次,让天数加1,直接在循环里判断是否位为周六或者周日;当是周日时,就要x=1;

p1888 

输入一组勾股数a,b,c(a!=b!=c),用分数格式输出其较小锐角的正弦值。(要求约分。)

约分就是找出两个数的最大公因数 

for(int i=a;i>=1;i--){  //求a和c的最大公约数,这里a

 还有另外一种求最大公约数的方法:辗转相除法。

p4414

三个整数分别为 A,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A

#include
using namespace std;
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int x,y,z;
	cin>>x>>y>>z;
	if(x>y)swap(x,y);
	if(y>z)swap(y,z);
    char c;
    for(int i=1;i<=3;i++){
        cin>>c;
        if(c=='A')cout<

 在for循环里可以直接先输入三个字符;然后再一次输出x,y,z;

e而我一开始以为这种输入方式只能输入一个字符再输出一个字符(有点无知了~~~),所以导致我不断的利用if循环来判断输入的顺序,来一次输出三个字符

p1055

每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字、1位识别码和 3位分隔符,其规定格式如 x-xxx-xxxxx-x,其中符号 - 就是分隔符(键盘上的减号),最后一位是识别码,例如 0-670-82162-4就是一个标准的 ISBN 码。ISBN 码的首位数字表示书籍的出版语言,例如 00 代表英语;第一个分隔符 - 之后的三位数字代表出版社,例如 670 代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以 1 加上次位数字乘以 2 ……以此类推,用所得的结果  mod 11,所得的余数即为识别码,如果余数为 10,则识别码为大写字母 �X。例如 ISBN 号码 0-670-82162-4 中的识别码 4 是这样得到的:对 067082162 这 9 个数字,从左至右,分别乘以 1,2,…,9 再求和,即 0×1+6×2+……+2×9=158,然后取 158mod11 的结果 4作为识别码。

你的任务是编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出 Right;如果错误,则输出你认为是正确的 ISBN 号码。

没太多要说的,很简单,就是不要忘记你计算得出来的模的结果可能是10,进行判断的时候不要直接用mod的值直接与末位判断是否相等

你可能感兴趣的:(算法,数据结构)