理解题意
惠特利在参加世界上最好的派对:它有着无数的蛋糕!
每个蛋糕都呈具有整数边长(cm)的正方形形状。
派对上有无限多个边长为任意整数的蛋糕。
蛋糕都有相同的高度,所以我们只考虑它们的面积。
惠特利决定吃一个或多个蛋糕,使其总面积恰好为 N cm2。
你能帮他计算一下他最少需要吃掉多少个蛋糕吗?
输入格式
第一行包含整数 T,表示共有 T组测试数据。
每组数据占一行,包含一个整数 N,为惠特利想吃掉的蛋糕的总面积。
输出格式
每组数据输出一个结果,每个结果占一行。
结果表示为 Case #x: y,其中 x是组别编号(从 1开始),y是惠特利最少需要吃掉的蛋糕数量。数据范围
1≤T≤100,
1≤N≤10000
输入样例:
3
3
4
5
输出样例:
Case #1: 3
Case #2: 1
Case #3: 2
样例解释
在样例#1中,唯一可行的策略是惠特利吃三个边长为 1的蛋糕。
在样例#2中,惠特利可以吃一个边长为 2的蛋糕。
在样例#3中,最好的策略是惠特利吃一个边长为 2的蛋糕和一个边长为 1的蛋糕。
提示:以下是本篇文章正文内容,下面案例可供参考
代码如下:
#include <iostream> #include <cmath> using namespace std; int cnt=0;//吃蛋糕块数 void test(int a){ int i; while(a){ i=sqrt(a); cnt++; a-=i*i; } } int main(){ int t,k[100]; cin>>t; for(int i=0;i<t;i++){ cin>>k[i]; } for(int i=0;i<t;i++){ test(k[i]); cout<<"Case#"<<i+1<<":"<<cnt<<endl; cnt=0;//每次循环cnt重置为0 } return 0; }