Description
小狗对小猫说:你猜猜我的口袋里有几块糖?小猫说:猜对了你给我吃吗?小狗点点头:嗯,猜对了两块都给你!小猫咽了咽口水说:我猜五块!然后,小狗笑着把糖放到小猫手里,说:我还欠你三块。
既然小猫这么喜欢吃糖,小狗决定每天都给小猫几块糖,但是呢,不能每天都给相同块数的糖,那样就太单调了。于是,第一天小狗给小猫11=1块,第二天22=4块……第 n 天给的糖数为 n*n 。现在已知小狗家共有 N 块糖,你需要帮他计算下这些糖最多可以给小猫几天?
Input
输入只有一个整数 N (0 <= N <= 10000)。
Output
输出对应的天数。
Sample
Input
15
Output
3
本题可以用总数一次一次的减,也可以用加的思路,即知道有一天的所需的糖块数比出事的总数大
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,i,N,x;
int sum=0;
scanf("%d",&N);
for(i=1; i; i++)
{
x=i*i;
sum=sum+x;
//sum即为所需的糖块数;
if(sum>N)
//直到sum比N大时终止循环,此处不要用sum>=N,否则需要再考虑sum是不是等于N;
break;
}
printf("%d",i-1);//不要忘了减“1”,因为最后一天是已经不够了;
return 0;
}
来源:CSDN
作者:蓮Mis-
链接:https://blog.csdn.net/zhangzhaolin12/article/details/103964291