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交换函数:
cpp
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排序:
cpp
#include<algorithm>
int a[4];
cin>>a[1]>>a[2]>>a[3];
sort(a+1,a+4);//参数是地址,左闭右开
冒泡排序:
cpp
#include<iostream>
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,一直构思不出来,题解里很不错的回答
cpp
#include<bits/stdc++.h> //包含了所有C++头文件的头文件
using namespace std;
int main()
{
unsigned long long n,ans=0; //坑就坑在这儿。天数都那么大了,总路程还会小吗???
int x;
cin >> x >> n; //输入星期和持续天数
for(int i=0;i<n;i++)
{
if((x!=6)&&(x!=7)) //只要星期不等于6和7
ans += 250; //总长度增加250
if(x==7) //当x等于7的时候
x=1; // x归位为1
else //其他情况下(x不等于7的时候)
x++; //x自加1
}
cout << ans; //输出总路程
return 0;
}
循环n次,让天数加1,直接在循环里判断是否位为周六或者周日;当是周日时,就要x=1;
p1888
输入一组勾股数a,b,c(a!=b!=c),用分数格式输出其较小锐角的正弦值。(要求约分。)
约分就是找出两个数的最大公因数
cpp
for(int i=a;i>=1;i--){ //求a和c的最大公约数,这里a<c
if(a%i==0&&c%i==0){
cout<<a/i<<'/'<<c/i;
return 0;
}
}
还有另外一种求最大公约数的方法:辗转相除法。
p4414
三个整数分别为 A,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A<B<C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。
cpp
#include<iostream>
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<<x<<' ';
if(c=='B')cout<<y<<' ';
if(c=='C')cout<<z<<' ';
}
return 0;
}
在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的值直接与末位判断是否相等