题目大意
![题目大意](https://i-blog.csdnimg.cn/blog_migrate/e0ae7765989eb3e22cffc8936f6a1b77.png)
思路
![思路](https://i-blog.csdnimg.cn/blog_migrate/b6beb335006dbf210b1be37e2abb9ae2.png)
代码
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int N = 2e5+10;
int n, m;
int a[N], ans[N];
PII p[N];
int main()
{
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
int tmp = 1;
while((tmp<<1) <= a[i]) tmp <<= 1;
p[i] = {tmp, i};
m = max(m, tmp);
}
printf("%d\n",m);
sort(p+1, p+1+n);
int pos = 1;
for(int i=1; i<=n; i++)
{
while(ans[pos]) pos ++;
for(int j=pos; j<=m; j+=p[i].first)
ans[j] = p[i].second;
}
for(int i=1; i<=m; i++)
{
printf("%d ",ans[i]==0?1:ans[i]);
}
return 0;
}
题目大意
![题目大意](https://i-blog.csdnimg.cn/blog_migrate/8fbc8cc58ff047aa3ccadb1ac0ce7bc1.png)
思路
![思路](https://i-blog.csdnimg.cn/blog_migrate/886febba527dac711b6d46e761c356d7.png)
代码
#include<bits/stdc++.h>
using namespace std;
int n,d,p[]={31,13331,5415479,7,10624079,131};
set<pair<int,int>> s,t,ans;
int main()
{
cin>>n>>d;
for(int i=0;i<n;i++)
{
int x,y;cin>>x>>y;
int t=abs(__gcd(x,y));
x/=t;y/=t;
s.insert({x,y});
}
ans.insert({0,0});
int idx=-1;
for(auto [x,y]:s)
{
idx++;t=ans;
for(auto [x1,y1]:t)
for(int i=1;i<d;i++)
ans.insert({x1+x*i*p[idx],y1+y*i*p[idx]});
}
cout<<ans.size()<<endl;
for(auto [x,y]:ans)
cout<<x<<" "<<y<<"\n";
return 0;
}