发牌
胡俊杰买到库洛牌后,要将库洛牌分发给小伙伴们。第一天,小伙伴收到 1 张库洛牌;之后两天,(第二天和第三天),每天收到 2 张库洛牌;之后三天(第四 五 六 天),每天收到 3 张库洛牌;之后四天(第七 八 九 十 天),每天收到 4 张库洛牌……;这种发牌方式会一直延续下去。当连续N天收到N张库洛牌后,小伙伴会在之后的N+1天里,每天收到N+1张库洛牌。
输入格式:
在第一行输入发牌的天数n
输出格式:
输出只包含一行一个正整数,即小伙伴收到的总扑克牌数
输入样例:
6
输出样例:
在这里给出相应的输出。例如:
14
我的java代码实现:
import java.util.Scanner;
public class OK {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入天数N:");
int n = input.nextInt();
int days=1;//days代表第一天
int sum=0;
while (n>=days){//你会发现n-1,n-2,n-3,n-4,比如:减去第一天立马又加上第一天总数,减去之后两天,又加上之后两天的总数。
n-=days;
sum+=days*days;//每段的实际总量,有几天就乘以几,比如:day=3,就是3*3=9;
days++;//day=1时,为第一天;day=2时,等于之后两天;day=3时,等于之后三天。
}
//true 会执行大括号的内容
//可能会有剩余的天数没有加上,那就在这里加上,比如之后四天 中的第七天,在上面的循环中可能会余下来一天,在这里要加上
sum+=days*n;
System.out.println("sum="+sum);
}
}
我的C++实现:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int sum=0;
int day=1;
while(n>=day)
{
n-=day;
sum+=day*day;
day++;
}
if(n)
sum+=day*n;
cout<< sum;
return 0;
}