A:点击打开链接
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int T;
cin >> T;
while(T--)
{
int n, m;
cin >> n >> m;
string ss;
cin >> ss;
int len = (int)ss.size();
int i = 0;
string t;
while(n--)
{
while(1)
{
t += ss[i++];
if((int)t.size() == m)
{
cout << t << endl;
t.clear();
break;
}
}
}
}
return 0;
}
C:
点击打开链接
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 40 + 5;
const int maxd = 1000 + 5;
double dp[maxn][maxd*maxn];
int a[maxn];
int main()
{
int T;
cin >> T;
while(T--)
{
int n;
double p;
memset(dp,0,sizeof(dp));
memset(a,0,sizeof(a));
cin >> n >> p;
int sum = 0;
for(int i = 1; i <= n; ++i) { cin >> a[i]; sum+=a[i];}
sort(a+1, a+n+1);
dp[0][0] = 1;
for(int i = 1; i <= n; ++i)
for(int j = 0; j <= sum; ++j)
{
dp[i][j] += dp[i-1][j] * 0.5;
if(j >= a[i])
dp[i][j] += dp[i-1][j-a[i]] * 0.5;
}
double v = 0;
for(int j = 0; j <= sum; ++j)
{
v += dp[n][j];
if(v >= p) {cout << j << endl; break;}
}
}
return 0;
}