题目描述
有一只小鱼,它平日每天游泳 250 公里,周末休息(实行双休日),假设从周 x (1≤x≤7) 开始算起,过了 n (n≤) 天以后,小鱼一共累计游泳了多少公里呢?
输入格式
输入两个整数x,n(表示从周x算起,经过n天)。
输出格式
输出一个整数,表示小鱼累计游泳了多少公里。
输入输出样例
输入 #1
3 10
输出 #1
2000
方法一:
思路:
抛去小鱼开始游泳那周的天数,剩下天数为m周+y天
1: 当x <= 5 时:
如果 y <= 5:
小鱼实际游泳天数为
n - 2 - 2 * m
如果y == 6:
小鱼实际游泳天数为
n - 3 - 2 * m
如果y == 7:
小鱼实际游泳天数为
n - 4 - 2 * m
2:当 x = 6:
如果 y <= 5:
小鱼实际游泳天数为
n - 2 - 2 * m
如果y == 6:
小鱼实际游泳天数为
n - 3 - 2 * m
如果y == 7:
小鱼实际游泳天数为
n - 4 - 2 * m
3:当 x = 7:
如果 y <= 5:
小鱼实际游泳天数为
n - 1 - 2 * m
如果y == 6:
小鱼实际游泳天数为
n - 2 - 2 * m
如果y == 7:
小鱼实际游泳天数为
n - 3 - 2 * m
因此 可以把x = 6 和 x <= 5的情况合并
#include <stdio.h>
int main()
{
int x, n, m, y,other,sum;
scanf("%d%d",&x,&n);
other = 7 - x + 1;
m = (n - other) / 7;
y = (n - other) % 7;
if(x <= 6)
{
if(y <= 5)
sum = n - 2 - 2 * m;
if( y == 6)
sum = n - 3 - 2 * m;
if( y == 7)
sum = n - 4 - 2 * m;
}else{
if(y <= 5)
sum = n - 1 - 2 * m;
if( y == 6)
sum = n - 2 - 2 * m;
if( y == 7)
sum = n - 3 - 2 * m;
}
printf("%d",sum * 250);
return 0;
}
方法二:
思路:
利用 for 循环,让 sum 累加 250,同时x ++
当x == 7的时候,将 x 置为 0,接着 x ++
#include<stdio.h>
int main(){
int x, n,sum,i;
sum = 0;
scanf("%d%d",&x,&n);
for(i = 0;i < n;i++)
{
if(x != 6 && x != 7)
sum += 250;
if(x == 7)
x = 0;
x ++;
}
printf("%d",sum);
return 0;
}
收获:
所有可能的情况都要想到,
首先考虑最特殊的情况,x == 6的时候,x == 7的时候,
不要忘了考虑 y== 6的时候,y == 7的时候