14 solutions
-
0
方法一:暴力法(会超时),可以算出来后直接输出答案
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll n,e,ans; int main() { for(ll a=1;a<=2021;++a) { for(ll b=1;b<=2021;++b) { for(ll c=1;c<=2021;++c) { ll d=2021-a-b-c; if(d>=2) ans+=d-1;//d-1种分解方法(难点) else break; } } } cout<<ans<<"\n"; //ans = 691677274345 return 0; }
方法二;找规律(隔板法)
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll ans=1,b; int main() { b=1; for(int a=2020;a>=2017;--a) { ans*=a; ans/=b; b++; } cout<<ans<<"\n"; return 0; }
Information
- ID
- 106
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 6
- Tags
- # Submissions
- 512
- Accepted
- 164
- Uploaded By