题目来源于洛谷,若有侵权,私信后立刻删除
小 B 喜欢吃苹果。她现在有 mmm(1≤m≤1001 \le m \le 1001≤m≤100)个苹果,吃完一个苹果需要花费 ttt(0≤t≤1000 \le t \le 1000≤t≤100)分钟,吃完一个后立刻开始吃下一个。现在时间过去了 sss(1≤s≤100001 \le s \le 100001≤s≤10000)分钟,请问她还有几个完整的苹果?
输入三个非负整数表示 m,t,sm, t, sm,t,s。
输出一个整数表示答案。
50 10 200
30
如果你出现了 RE,不如检查一下被零除?
ps:注意
#include
using namespace std;
int main()
{
int m,t,s;
cin>>m>>t>>s;
if (t==0)cout<<0;
else{
if((float)(s/t)>=(float)m)cout<<0;
else{
if(s%t==0)cout<<m-s/t;
else cout<<m-(int)(s/t)-1;
}
}
return 0;
}
一些整数可能拥有以下的性质:
小 A 喜欢这两个性质同时成立的整数;Uim 喜欢这至少符合其中一种性质的整数;小 B 喜欢刚好有符合其中一个性质的整数;正妹喜欢不符合这两个性质的整数。现在给出一个整数 xxx,请问他们是否喜欢这个整数?
输入一个整数 x(0≤x≤1000)x(0\le x \le 1000)x(0≤x≤1000)
输出这 444 个人是否喜欢这个数字,如果喜欢则输出 1
,否则输出 0
,用空格分隔。输出顺序为:小 A、Uim、小 B、正妹。
12
1 1 0 0
ps:小心思:
有些绕的点:Uim只要一个成立就可,B是J1!=J2,已经正妹的bool值改变条件怎么写
代码:
#include
using namespace std;
int main() {
bool A = false, Uim = false, B = false, M = false, J1 = false, J2 = false;
int input;
cin >> input;
if (input % 2 == 0)J1 = true;
if (input > 4 && input <= 12)J2 = true;
if (J1 && J2)A = true;
if(J1||J2)Uim = true;
if (J1 != J2)B = true;
if (!J1 && !J2)M = true;
cout << A << ' ' << Uim << ' ' << B << ' ' << M;
return 0;
}
ps:1.使用布尔值输出 2.判断条件
代码:
#include
using namespace std;
int main(){
int year;
cin>>year;
bool _year;
if(year%400==0)_year=true;
else if(year%100!=0&&year%4==0)_year=true;
else _year=false;
cout<<_year;
return 0;
}
小 B 喜欢吃苹果。她今天吃掉了 xxx 个苹果。英语课上学到了 apple 这个词语,想用它来造句。如果她吃了 1 个苹果,就输出 Today, I ate 1 apple.
;如果她没有吃,那么就把 1 换成 0;如果她吃了不止一个苹果,别忘了 apple
这个单词后面要加上代表复数的 s
。你能帮她完成这个句子吗?
输入一行一个自然数 xxx,表示吃掉的苹果数。
根据题目要求输出。
1
Today, I ate 1 apple.
3
Today, I ate 3 apples.
对于所有数据,0≤x≤1000\le x \le 1000≤x≤100。
ps:小心思:三目运算符简化操作
注意空格,**Today,**后有一个空格
代码:
#include
using namespace std;
int main()
{
int a;
cin >> a;
cout << "Today, I ate " << a << (a > 1 ? " apples." : " apple.");
return 0;
}
给出三个整数 a,b,c(0≤a,b,c≤100)a,b,c(0\le a,b,c \le 100)a,b,c(0≤a,b,c≤100),要求把这三位整数从小到大排序。
输入三个整数 a,b,ca,b,ca,b,c,以空格隔开。
输出一行,三个整数,表示从小到大排序后的结果。
1 14 5
1 5 14
2 2 2
2 2 2
ps:我使用的是**比较蠢(带双引号)**的直接if-else,有种就是故意受罪的感觉,但是只有亲身自己写一遍这个看起来简单的if-else,才会知道这其实并不像看起来那样简单
代码:
#include
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
if (a > b) {
if (b > c)cout << c << ' ' << b << ' ' << a;
else {
if (a > c)cout << b << ' ' << c << ' ' << a;
else cout << b << ' ' << a << ' ' << c;
}
}
else {
if (a > c)cout << c << ' ' << a << ' ' << b;
else {
if (c > b)cout << a << ' ' << b << ' ' << c;
else cout << a << ' ' << c << ' ' << b;
}
}
return 0;
}
输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。
输入两个正整数,分别表示年份 yyy 和月数 mmm,以空格隔开。
输出一行一个正整数,表示这个月有多少天。
ps:小心思:直接写两张月份表,按照布尔值_year(是否闰年)选择两张表
代码:
#include
using namespace std;
int main()
{
int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int a2[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int year, month;
bool _year;
cin >> year >> month;
if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))_year = true;
else _year = false;
if (_year)cout << a2[month - 1];
else cout << a[month - 1];
return 0;
}
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
输入包括 777 行数据,分别表示周一到周日的日程安排。每行包括两个小于 101010 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
一个数字。如果不会不高兴则输出 000,如果会则输出最不高兴的是周几(用 1,2,3,4,5,6,71, 2, 3, 4, 5, 6, 71,2,3,4,5,6,7 分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
5 3
6 2
7 2
5 3
5 4
0 4
0 6
3
ps:小心思:
代码:
#include
using namespace std;
int main() {
bool is_happy = true;
int max_study_time = 0, max_study_time_num, time1,time2;
for (int i = 1; i <= 7; i++) {
cin >> time1>>time2;
if (time1 + time2 > 8) {
is_happy = false;
}
if (!is_happy&&(time1+time2>max_study_time)) {
max_study_time = time1 + time2;
max_study_time_num=i;
}
}
if (is_happy)cout << 0;
else cout << max_study_time_num;
return 0;
}
NOIP2016 普及组 T1
P 老师需要去商店买 nnn 支铅笔作为小朋友们参加 NOIP 的礼物。她发现商店一共有 333 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P 老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此 P 老师可能需要购买超过 nnn 支铅笔才够给小朋友们发礼物。
现在 P 老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 nnn 支铅笔最少需要花费多少钱。
第一行包含一个正整数 nnn,表示需要的铅笔数量。
接下来三行,每行用 222 个正整数描述一种包装的铅笔:其中第 111 个整数表示这种包装内铅笔的数量,第 222 个整数表示这种包装的价格。
保证所有的 777 个数都是不超过 100001000010000 的正整数。
111 个整数,表示 P 老师最少需要花费的钱。
57
2 2
50 30
30 27
54
9998
128 233
128 2333
128 666
18407
9999
101 1111
1 9999
1111 9999
89991
ps:主要是解释一下+0.999操作这个。首先代码中对num是做了个类型转换成float,原因是如果两个int相除,小数部分是会直接截断,所以不可以做到只要有小数部分就向上取整的操作
代码:
#include
using namespace std;
int main() {
int n, min_sum, num, price;
cin >> n >> num >> price;
//cout <<"(int)(n / num) "<< (int)(n / num) << endl;
//cout << "(int)(n / num + 0.9999999) :" << (int)((float)n / num +0.999) << endl;
min_sum = ((int)((float)n / num + 0.9999999)) * price;
//cout << num << ' ' << price << ' ' << min_sum << endl;
for (int i = 0; i < 2; i++) {
int _num, _price;
cin >> _num >> _price;
//cout <<" i " <<" "<< _num <<" " << _price << endl;;
int sum = (int)((float)n / _num + 0.9999) * _price;
if (sum < min_sum)min_sum = sum;
}
cout << min_sum;
return 0;
}
有一只小鱼,它平日每天游泳 250250250 公里,周末休息(实行双休日),假设从周 xxx 开始算起,过了 nnn 天以后,小鱼一共累计游泳了多少公里呢?
输入两个正整数 x,nx,nx,n,表示从周 xxx 算起,经过 nnn 天。
输出一个整数,表示小鱼累计游泳了多少公里。
3 10
2000
数据保证,1≤x≤71\le x \le 71≤x≤7,1≤n≤1061 \le n\le 10^61≤n≤106。
ps:小心思:1.使用布尔值判断周末 2.循环式累加(当x==7时,先变成0,再自增,不用写其他条件判断)
代码:
#include
using namespace std;
int main() {
bool is_weekend ;
int x, n, sum = 0;
cin >> x >> n;
for (int i = 0; i < n; i++) {
if (x == 6 || x == 7) {
is_weekend = true;
}
else is_weekend = false;
if (!is_weekend)sum += 250;
if (x == 7)x = 0;
x++;
}
cout << sum;
return 0;
}
输入一组勾股数 a,b,c(a≠b≠c)a,b,c(a\neq b\neq c)a,b,c(a=b=c),用分数格式输出其较小锐角的正弦值。(要求约分。)
一行,包含三个正整数,即勾股数 a,b,ca,b,ca,b,c(无大小顺序)。
一行,包含一个分数,即较小锐角的正弦值
3 5 4
3/5
数据保证:a,b,ca,b,ca,b,c 为正整数且 ∈[1,109]\in [1,10^9]∈[1,109]。
ps:难点:1.求最大公约数 2.找最大最小值(当然有别的方法,我的代码有自讨苦吃之嫌疑)
代码:
#include
using namespace std;
int gcd(int a, int b) {
int temp=1;
while (temp) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
int main()
{
int a, b, c,num;
cin >> a >> b >> c;
c = (a > b ? a : b) > (b > c ? b : c) ? (a > b ? a : b) : (b > c ? b : c);
a = (a < b ? a : b) < (b < c ? b : c) ? (a < b ? a : b) : (b < c ? b : c);
//cout << "max:" << c << " min :" << a << endl;
num = gcd(a, c);
cout << (a / num) << "/" << (c / num);
return 0;
}