1:现在有n个学生,每个学生都有一个能力值ai,为了方便管理,决定将n个学生分成k组(每个小组里至少要有一个人)。
如果一个小组有一个能力在该小组极其突出的学生,这个小组就比较容易管理。
这个小组的管理方便度f(i)=第i个小组能力值最大的-第i个小组能力值最小的,
即f(i)=max(aj∈team i)-min(aj∈team i), 现在想知道f(1)+f(2)+........f(k)的最大值
输入
多组输入
第一行两个整数分别为n,k。
第二行n个数分别代表a1,a2...ak.
1<=n<=1000
1<=k<=n
1<=a[i]<=10000
输出
一个整数表示最大的管理方便度之和。
题解:
#include<stdio.h>
#include<string.h>
int main()
{
int n,k,sum=0;
while(scanf("%d %d",&n,&k)!=EOF)//多组输入
{
char a[1000];//定义一个数组,也可以直接inta[1000]
for(int i=0; i<n; i++)
scanf("%s",&a[i]);//将n个学生存入到数组a中
for(int j=0; j<n-1; j++)
for(int i=0; i<n-j-1; i++)
if(a[i]<a[i+1])
{
int t;
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(int i=0;i<k;i++)
sum+=a[i];
sum=sum-a[n-1];//通过上述循环后进行加和
printf("%d\n",sum);//输出最大的管理方便度之和
}
}
2:话说有这么一天, 曹大神正走在去上课的路上,突然他发现,似乎马上就要迟到了,急的他马上跳了起来(急的不能正常走路了 O(∩_∩)O哈哈~~)。现在假设曹大神的位置在(0,0),教室的位置在(x,0)。
曹大神第i次跳只能跳 i 的距离,帮曹大神算一下他最快能跳多少次就到教室,算对了曹大神可是会有感谢的哟~(每次跳跃可以向左也可以向右)
输入
输入一个整数 T,表示有 T 组测试数据。
对于每组测试数据,输入一个整数 x(-10e9 <= x <= 10e9)表示教室的x坐标。
输出
对于每组测试数据,输出一个整数,曹大神最快跳几次可以到教室。
题解:
#include<stdio.h>
int main()
{
int T;//定义一个T,表示有T组测试数据
scanf("%d",&T);
long long int x;
while(scanf("%lld",&x)!=EOF)//多组输入,不过也可以是while(T--),然后再输入数据
{
int i=0,sum=0,t;//下述循环,分情况计算次数
if(x==0)
t=0;
else
{
if(x<0)
x=-x;
for(i=1;;i++)//i没有给定范围
{
sum+=i;
if((sum-x)%2==0&&sum-x>=0)
break;
}
t=i;//将t和i的数值调换
}
printf("%lld\n",t);//最后输出需要多少步
}
return 0;
}
3:一位智将才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。 输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。
输入
输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7)。例如,输入:2 4 5
输出
输出总人数的最小值(或报告无解,即输出No answer)。实例,输出:89
题解:
#include<stdio.h>
int main()
{
int a,b,c,i,k=0;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)//多组输入
{
for(i=10;i<=100; i++)//用if语句直接判断人数符合哪种情况
{
if(i%3==a&&i%5==b&&i%7==c)
{
k++;
printf("%d\n",i);
break;
}
}
if(i>100)
{
k++;
printf("%d",k);//输出总人数的最小值
}
}
return 0;
}