DZY Loves Partition 

【思路】

    贪心

【代码】

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 typedef long long ll;
 5 const int mod=1e9+7;
 6 
 7 ll n,k,a[200000];
 8 
 9 int main() 
10 {
11     int T;
12     cin>>T;
13     while(T--) {
14         cin>>n>>k;
15         ll x=n/k;
16         if(k*(k+1)/2>n)
17             cout<<-1<<endl;
18         else {
19             if(k%2) {
20                 for(int i=k/2;i>0;i--) a[i]=x-(k/2-i+1);
21                 for(int i=k/2+1;i<=k;i++) a[i]=x+(i-k/2-1);
22                 int m=n%k;
23                 for(int i=k;m>0;m--,i--) a[i]++;
24             }
25             else {
26                 for(int i=k/2;i>0;i--) a[i]=x-(k/2-i+1);
27                 for(int i=k/2+1;i<=k;i++) a[i]=x+(i-k/2);
28                 int m=n%k;
29                 for(int i=k/2;i&&m;i--,m--) a[i]++;
30                 if(m>0)
31                     for(int i=k;i>k/2&&m;i--,m--) a[i]++;
32             }
33             ll ans=a[1];
34             for(int i=2;i<=k;i++) { ans*=a[i]; ans%=mod; }
35             cout<<ans<<endl;
36         }
37     }
38     return 0;
39 }
View Code

相关文章:

  • 2021-07-17
  • 2021-10-03
  • 2021-12-12
  • 2021-05-21
  • 2021-07-19
  • 2021-10-22
  • 2021-10-22
  • 2021-08-18
猜你喜欢
  • 2021-10-17
  • 2022-12-23
  • 2021-10-07
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
  • 2021-09-28
相关资源
相似解决方案