养生网站建设论文/石家庄seo网站管理
目录
Descryption
输入
输出
样例
输入
输出
输入
输出
分析
代码
Descryption
给定两个整数K,S 问有多少三元组(x,y,z)满足 1:0<=x,y,z<=K 2:x+y+z=S
时间:1s 空间:128MB
输入
一行给出两个整数K,S 2<=K<=2500 0<=S<=3*K
输出
一个整数,代表答案
样例
输入
2 2
输出
6
输入
5 15
输出
1
提示
只能用两个循环嵌套哟
分析
三个循环,枚举x、y、z,当x+y+z==s时,ans++,好了,做完了
我们来提交一下。
好吧,题目里仿佛说了只能用两层循环嵌套。
那么怎么优化呢?
首先,注意到x+y+z==s。运用简单的等式的性质,我们就可以得到
s-x-y==z。这样,我们就成功地得到了一个两层循环的代码。
再交一下。
……
这代码咋就那么奇怪呢?
我们再来看一看题。
懂了吧?
z是有限制条件的,也就是说,0<=z<=k。
so,x+y<=s&&s-x-y<=k。
带你们排了那么多的错,代码应该会写了吧?
代码
#include<bits/stdc++.h>
using namespace std;
int k,s,ans;
int main()
{cin>>k>>s;for(int x=0;x<=k;x++)for(int y=0;y<=k;y++)if(x+y<=s&&s-x-y<=k)ans++;cout<<ans;
}