洛谷 P1424 小鱼的航程(改进版)
题目描述
有一只小鱼,它平日每天游泳 250 公里,周末休息(实行双休日),假设从周 x (1≤x≤7) 开始算起,过了 n(n≤10^6) 天以后,小鱼一共累计游泳了多少公里呢?
输入格式
输入两个整数x,n(表示从周x算起,经过n天)。
输出格式
输出一个整数,表示小鱼累计游泳了多少公里。
输入输出样例
输入 输出
3 10 2000
#include<stdio.h>
int main(void)
{
int n, x, t;
scanf("%d %d", &x, &n);
unsigned long long journey = (6 - x) * 250;
t = n - 8 + x;
if (t <= 0) {
printf("%lld", journey);
}
else
{
while (t > 0) {
if (t > 7) {
journey += 5 * 250;
t -= 7;
}
else if (t <= 7 && t > 5) {
journey += 5 * 250;
break;
}
else {
journey += t * 250;
break;
}
}
printf("%lld", journey);
}
return 0;
}
当n<6-x的时候,计算结果是错误的。代码修改如下:
#include<stdio.h>
int main(void)
{
int n, x, t;
scanf("%d %d", &x, &n);
unsigned long long journey =0;
if(6-x > n)
{
journey = n*250;
printf("%lld",journey);
return 0;
}
else if(6-x>0)
journey = (6 - x) * 250;
t = n - 8 + x;
if (t <= 0) {
printf("%lld", journey);
}
else
{
while (t > 0) {
if (t > 7) {
journey += 5 * 250;
t -= 7;
}
else if (t <= 7 && t > 5) {
journey += 5 * 250;
break;
}
else {
journey += t * 250;
break;
}
}
printf("%lld", journey);
}
return 0;
}
不建议用unsigned,因为unsigned的数在比较大小时会出问题
改成
long long journey = (6 - x) * 250;