主题:我做的一道ACM题目,不知道为什么AC不了
题目是这样的:
灾后的救援需要很多的人员,现在又刚刚到达一批志愿者,他们一共有n(10<=n<=1000)人,根据指挥部的指示,他们将被分为抢险、医疗以及通信等3个小分队,并且规定,抢险小分队需要占总人数的一半(如果有小数的话,则舍去),医疗小分队需要占剩余人数的2/3(如果有小数的话,则舍去),剩余的则组成通信小分队。比如一共有55人,那么抢险小分队为55/2=27人,减去抢险小分队为27人剩下28人,则医疗小分队为28*2/3 = 18人,通信小分队为55-27-18=10人。
为了保证救援工作的顺利进行,指挥部决定为每个小分队指派若干当地的向导,原则是为每十个志愿者指派一个向导(如有不足10人的情况,也指派一个),现在请问:需要为这批志愿者指派多少个向导呢?
Input
输入数据首先包含一个正整数C,表示有C组测试用例,然后是C行数据,每行包含一个正整数n(10<=n<=1000),表示志愿者的总人数。
Output
对于每组测试数据,请输出需要的向导数目,每个输出占一行。
Sample Input
2
14
55
Sample Output
3
6
我的代码是这样的,测试的几个例子都是对的:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int get(int x)
{
if(x%10 == 0)
return x/10;
else
{
if(x>10)
{
for(int i = x - 1;i>x - 10;--i)
if(i%10 == 0)
return i/10 + 1;
}
else
return 1;
}
}
int main()
{
int C;
int n;
int x, y, z;
int i;
cin>>C;
for( i = 0;i<C;++i)
{
cin>>n;
//To get value of x
if(n%2 == 0)
x = n/2;
else
x = (n-1)/2;
//To get value of y
if((n - x)%3 == 0)
y = (n - x)*2/3;
else
{
if((n - x)%3 == 1)
y = (n - x - 1)*2/3;
if((n - x)%3 == 2)
y = (n - x - 2)*2/3;
}
//To get value of z
z = n - x -y;
cout<<get(x) + get(y) +get(z)<<endl;
}
return 0;
}
灾后的救援需要很多的人员,现在又刚刚到达一批志愿者,他们一共有n(10<=n<=1000)人,根据指挥部的指示,他们将被分为抢险、医疗以及通信等3个小分队,并且规定,抢险小分队需要占总人数的一半(如果有小数的话,则舍去),医疗小分队需要占剩余人数的2/3(如果有小数的话,则舍去),剩余的则组成通信小分队。比如一共有55人,那么抢险小分队为55/2=27人,减去抢险小分队为27人剩下28人,则医疗小分队为28*2/3 = 18人,通信小分队为55-27-18=10人。
为了保证救援工作的顺利进行,指挥部决定为每个小分队指派若干当地的向导,原则是为每十个志愿者指派一个向导(如有不足10人的情况,也指派一个),现在请问:需要为这批志愿者指派多少个向导呢?
Input
输入数据首先包含一个正整数C,表示有C组测试用例,然后是C行数据,每行包含一个正整数n(10<=n<=1000),表示志愿者的总人数。
Output
对于每组测试数据,请输出需要的向导数目,每个输出占一行。
Sample Input
2
14
55
Sample Output
3
6
我的代码是这样的,测试的几个例子都是对的:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int get(int x)
{
if(x%10 == 0)
return x/10;
else
{
if(x>10)
{
for(int i = x - 1;i>x - 10;--i)
if(i%10 == 0)
return i/10 + 1;
}
else
return 1;
}
}
int main()
{
int C;
int n;
int x, y, z;
int i;
cin>>C;
for( i = 0;i<C;++i)
{
cin>>n;
//To get value of x
if(n%2 == 0)
x = n/2;
else
x = (n-1)/2;
//To get value of y
if((n - x)%3 == 0)
y = (n - x)*2/3;
else
{
if((n - x)%3 == 1)
y = (n - x - 1)*2/3;
if((n - x)%3 == 2)
y = (n - x - 2)*2/3;
}
//To get value of z
z = n - x -y;
cout<<get(x) + get(y) +get(z)<<endl;
}
return 0;
}