套路套路都是套路
#include <cstdio>
#include <stack>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <map>
#include <vector>
#include <queue>
#include <set>
#define eps 1e-8
typedef long long ll;
const double PI = acos(-1.0);
const int maxn = 1005;
const int INF = 0x3f3f3f;
const ll linf = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
using namespace std;
int num[maxn],head[maxn];
int main()
{
//ios::sync_with_stdio(false);
ll n;
while(cin>>n)
{
ll m = sqrt(n);
ll sum = 0,l = 1,r = 0;
int cnt = 0;
while(l<=m)
{
while(sum<n)
{
r++;
sum += r*r;
}
if(sum == n)
{
num[cnt] = r-l+1;
head[cnt++] = l;
}
sum -= l*l;
l++;
}
cout<<cnt<<endl;
for(int i = 0; i<cnt; i++)
{
cout<<num[i];
for(int j = 0; j<num[i]; j++)
cout<<" "<<head[i]+j;
cout<<endl;
}
}
return 0;
}
#include <cstdio>
#include <stack>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <map>
#include <vector>
#include <queue>
#include <set>
#define eps 1e-8
typedef long long ll;
const double PI = acos(-1.0);
const int maxn = 1e6;
const int INF = 0x3f3f3f;
const ll linf = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
using namespace std;
int cnt;
int v[maxn],prime[maxn];
void init()
{
memset(v, 0, sizeof v);
int N = 100000;
cnt = 0;
for(int i = 2; i<=N; i++)
{
if(v[i] == 0)
{
v[i] = i;
prime[cnt++] = i;
}
for(int j = 0; j<cnt; j++)
{
if(prime[j]>v[i] || prime[j]>N/i)
break;
v[i*prime[j]] = prime[j];
}
}
}
int main()
{
ios::sync_with_stdio(false);
int n;
init();
while(cin>>n && n)
{
int ans = 0;
int sum = 0;
int l = 0,r = 0;
while(prime[l]<=n)
{
while(sum<n)
sum += prime[r++];
if(sum == n)
ans++;
sum -= prime[l];
l++;
}
cout<<ans<<endl;
}
return 0;
}
#include <cstdio>
#include <stack>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <map>
#include <vector>
#include <queue>
#include <set>
#define eps 1e-8
typedef long long ll;
const double PI = acos(-1.0);
const int maxn = 1e6+5;
const int INF = 0x3f3f3f;
const ll linf = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
using namespace std;
int vis[30];
char s[maxn];
int main()
{
//ios::sync_with_stdio(false);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
int k;
scanf("%d",&k);
memset(vis,0,sizeof vis);
int n = strlen(s);
int l = 0,r = 0;
ll ans = 0;
int cnt = 0;
while(l<n)
{
while(r<n && cnt<k)
{
if(!vis[s[r]-'a'])
cnt++;
vis[s[r]-'a']++;
r++;
}
if(cnt == k)
ans += n-r+1;
if(vis[s[l]-'a'] == 1)
cnt--;
vis[s[l]-'a']--;
l++;
}
cout<<ans<<endl;
}
return 0;
}
#include <cstdio>
#include <stack>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <map>
#include <vector>
#include <queue>
#include <set>
#define eps 1e-8
typedef long long ll;
const double PI = acos(-1.0);
const int maxn = 1e6;
const int INF = 0x3f3f3f;
const ll linf = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
using namespace std;
ll a[maxn];
int main()
{
ios::sync_with_stdio(false);
int T;
cin>>T;
while(T--)
{
int n;
ll k;
cin>>n>>k;
for(int i = 0; i<n; i++)
cin>>a[i];
sort(a,a+n);
int l = 0,r= 0;
ll ans = 0;
while(l<n)
{
while(r<n && a[r]-a[l]<=k)
r++;
ans += r-l-1;
l++;
}
cout<<ans<<endl;
}
return 0;
}