A

B

从上往下观察,第i层比第i - 1层多i,第一次有1

1:1
2:1 + 2
3:1 + 2 + 3
...
i: 1 + 2 + 3...+i

所以就算答案就是 1+1+2+1+2+3+...+(1+2+3+...+n)1+(1+2)+(1+2+3)+...+(1+2+3+...+n)

C

数位分离,加起来判断 用while就行数位分离

while(n)
{
	cnt+=n%10;
	n/=10;
}

特别注意n最大是1e181e18所以int不够装

D

经典问题,假设法,但要注意是否整除2,必须是整数只 而且不能是负数只,做不出来不应该

E

有过视频讲解的,做不出来说明没理解

F

存储最大值下标即可,打完擂台最后交换

int max=n[0];
        int j=0;
        for(int i=1;i<a;i++){
            if(n[i]>max){
                max=n[i];
                j=i;
            }
        }
        swap(n[j],n[a-1]);//该函数就是交换两个数

G

第几天变形,求出第几天,假设是s 闰年:366 - s 平年:365 - s

int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int run[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	if ((a%4==0&&a%100!=0)||(a%400==0))
	{
		int tian=366;
		int h=0;
		for(int i=0;i<b-1;i++)
		{
			h+=run[i];
		}
		h+=c;
		cout<<tian-h;
	}
	else
	{
		int tian=365;
		int h=0;
		for(int i=0;i<b-1;i++)
		{
			h+=ping[i];
		}
		h+=c;
		cout<<tian-h;
	}

H

和金字塔一样,输出的是数字而已 视频有讲过输出金字塔

I

模拟该过程即可,细心点

J

防止有人全做出的题,后面会讲^-^

K

奥数 想想如果有4个是不是两个1是最大,贪心一下 尽可能凑出多个1,但是火柴必须用完奇数的时候,拿3根拼成7即可

if(n%2==0){
		for(int i=1;i<=n/2;i++)cout<<1;
	}
	else {
		cout<<7;
		for(int i=1;i<n/2;i++)cout<<1;
	}

0 条评论

目前还没有评论...