对于以下问题,我已尝试并修改了几个测试用例的代码,但我仍然在网上判断得到了错误的答案。请告诉我测试用例我错过了我的代码中我无法看到的任何可能的错误
问题:
厨师正在为他的一位客人准备生日蛋糕, 他决定用蜡烛写下客人的年龄。 有10种类型的蜡烛,每个数字为'0'到'9'。 然而,厨师已经忘记了客人的年龄,因此不知道他是否有足够的蜡烛。 例如,如果客人是101岁,厨师将需要两个'1'蜡烛和一个'0'蜡烛。 鉴于厨师拥有的蜡烛,您的任务是确定无法用这些蜡烛表示的最小正整数。 输入:
输入将以整数T≤100开始,即测试用例的数量。 每个测试用例由一行组成,其中包含10个整数,每个整数在0到8之间。 每个测试用例的第一个整数表示厨师拥有的'0'蜡烛数, 第二个整数表示厨师拥有的'1'蜡烛数,依此类推。 输出:
对于每个测试用例,在单行上输出无法用给定蜡烛表示的最小正整数。 样本输入:
3
2 1 1 4 0 6 3 2 2 2
0 1 1 1 1 1 1 1 1 1
2 2 1 2 1 1 3 1 1 1
示例输出:
4 10 22
这是我上述问题的代码:
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int arr[10];
for(int i=0;i<10;i++)
cin>>arr[i];
int min_value=arr[1],min_index=1;
for(int i=1;i<10;i++)
{
if(min_value>arr[i])
{
min_value=arr[i];
min_index=i;
}
}
if(min_value==0)
cout<<min_index<<endl;
else if(min_value!=0&&arr[0]==0)
cout<<10<<endl;
else if(min_value!=0&&arr[0]!=0)
{
if(arr[0]<min_value)
cout<<min_index*pow(10,arr[0]+1);
else if(arr[0]>=min_value)
{
for(int i=0;i<=min_value;i++)
cout<<min_index;
cout<<endl;
}
}
}
}
还告诉我,找到排除0阶指数和包含0阶指数的最小值是否会对问题的答案产生影响?
答案 0 :(得分:1)
这个for循环不符合你的想法:
for(int i=0;i<min_value;i++)
age=min_index*10+min_index;
答案 1 :(得分:0)
如果arr [0] == min_value会怎么样?例如
2
1 1 2 3 4 5 6 7 8 9
5 5 8 8 8 8 8 8 8 8
您当前的代码说:
if(arr[0]<min_value)
cout<<min_index*pow(10,arr[0]+1);
else if(arr[0]>min_value)
{
...
}