广州铁一专属通道:吃糖
小C同学十分喜欢吃糖,他每天吃的糖是他前天吃的糖加上他昨天吃的糖,但他吃的糖太多了,所以需要控制摄糖量。小C的老师程序龙帮他限定了吃糖数量,只给了他 n 颗糖,他第 1 天吃了 a 颗糖,第 2 天吃了 b 颗糖,第 3 天吃了 a+b 颗糖......
问:在第几天的时候糖不够吃了,差几颗?
两行
第一行一个整数 n(1≤n≤10000)表示糖的颗数。
第二行两个整数 a 和 b。(0≤a,b≤10000)
输出两个整数,表示糖在第几天的不够吃,差几颗。两个数据用空格隔开。
5
1 2
3 1
#include <bits/stdc++.h>
using namespace std;
int n, a, b, sum, i = 2, x, y;
int main()
{
cin >> n >> a >> b;
if (a > n)//特判
{
cout << 1 << " " << a - n << endl;
return 0;
}
else if (a + b > n)//特判×2
{
cout << 2 << " " << (a + b) - n << endl;
return 0;
}
x = a;//把第二天的先加上
y = b;//把第二天的先加上
sum = a + b;//把第二天的先加上
while (true)//从这开始算第三天
{
i++;//天数
sum += x + y;//目前已经吃的糖
x = y;//更新前天
y = sum;//更新昨天
if (sum > n)//如果大于了
{
cout << i << " " << sum - n << endl;
return 0;
}
}
}