A金币
老班将金币作为工资,发放给忠诚的学生。第一天,学生收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种奖金发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,学生会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得了多少金币。
输入格式
一个正整数K,表示发放金币的天数。
输出格式
一个正整数,即骑士收到的金币数。
输入输出样例
-
输入:6/输出:14
-
输入:1000/输出:29820
说明/提示
【输入输出样例 1 说明】
学生第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到 1+2+2+3+3+3=14 枚金币。
对于 100%的数据,1 ≤ K ≤ 10,000。
//数列规则:1,2,2,3,3,3,4,4,4,4
#include <stdio.h>
int main()
{
int m,n,k,s=0,count=1;
scanf("%d",&k);//发放金币的天数
for(m=1;m<=k;count++){//m循环天数
for(n=1;n<=count;n++){//n同等金币持续循环天数
s+=count;m++;//s记录金币,m限制总天数
if(m>k) break;//循环够天数后退出
}
}
printf("%d",s);//收到的金币数
return 0;
}
B三角形
一个三角形的三边长分别是 a,b,c那么它的面积为 sqrt{p(p-a)(p-b)(p-c)}
,其中 p=1/2*(a+b+c)
。输入这三个数字,计算三角形的面积,四舍五入精确到 1 位小数。
保证能构成三角形,0<=q a,b,c<=q 10000≤a,b,c≤1000,每个边长输入时不超过2位小数。
输入输出样例
输入:3 4 5/输出:6.0
就套公式,不会有人没做出来吧?不会吧 不会吧?
#include <stdio.h>
#include <math.h>
int main(){
double a,b,c;//三条边长
scanf("%lf %lf %lf",&a,&b,&c);
double p=(a+b+c)/2.0;//计算p
double area=sqrt(p*(p-a)*(p-b)*(p-c));//计算面积
printf("%.1lf",area);
return 0;
}
C序列
假定有n(n<=1000)个整数(都在int范围内即-2147483648~2147483647)
在序列中,第一个数是n个整数中的最大数,第二个数是n个整数中的最小数,第三个数是n个数中的第二大数,第四个数是n个数中的第二小数…… 取过的数不能再取,依次类推,直到结束。
请你用程序正确的帮他找出这 n个数的老班序列。
输入格式
第1行为一个整数n。
接下来 n行给出了题目中所述的 n个整数,每行包含一个整数
输出格式
有n行,每行为一个整数,是满足条件的老班序列
输入输出样例
输入:
5
10
-1
3
3
-9
输出:
10
-