备战NOIP2020——历年普及组第一题详解

为什么我只写普及组呢?

ANS:

按照我们现在的水平,报名参加提高组拿不到奖。 ——许洁


正文开始:

今天只讲 金币 和 珠心算测验这两道题。

这两道题在PJZT1中属于难题。其实还是简单

一. 金币。

https://www.luogu.com.cn/problem/P2669

看上去很难,其实很简单。

控制好循环就可以了。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int K,N,coin=0;
    cin>>K;             
    for(N=1;K-N>=0;K-=(N++))    
        coin+=N*N;               
    cout<<coin+K*N;
    return 0;
}

再给一种好理解一点的方法。

#include <bits/stdc++.h>
using namespace std;
int n;
long long ans;
int main()
{
	cin>>n;
	int h=0;
	for(int i=1;;i++) {
			ans+=i*i;
			h+=i;
			if(h>n){
				ans-=(h-n)*i;
				h=n;
			}
		if(h==n) break;
	}
	cout<<ans<<endl;
	return 0;
} 

二:珠心算测验

https://www.luogu.com.cn/problem/P2141

不多说。就是枚举

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,c,d,sum=0;
    int a[n],b[n];
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i]; 
        b[i]=a[i];
    }
    for(int i=1;i<=n-1;i++)
    {
        c=a[i];
        for(int j=i+1;j<=n;j++)
        {
            d=a[j];  
            for(int k=1;k<=n;k++)
            {
                if( b[k] == c+d) 
                {
                    sum++; 
                    b[k] = 0;
                }
            } 
        }
    }
    cout<<sum; 
    return 0; 
}

总结:

历年PJZ的T1都是很简单的,做对就有100分,(基本上就有二等奖)。

所以一定要仔细,不能出错。

5 1 vote
Article Rating
Subscribe
提醒
5 评论
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
EricNTH

2020年8月2日10:25 审核通过

Rolling_Code

简单,不如分析一下T4(

Rolling_Code

啊这

Alex172

我负责t2t3

5
0
Would love your thoughts, please comment.x
()
x