2025-10-08 2026-05-04 题目传送门 思路: 首先,不难看出,如果 k>nk > nk>n,那么 f(P,k)f(P,k)f(P,k) 肯定为 000,所以可以随便输出(比如从小到大)。 而 k≤nk \le nk≤n 时,我们可以通过每个数除以 kkk 的余数进行分类,即除以 kkk 余数相同的数,两两差 kkk,要放在一起。而且这样可以 111 到 nnn 的每个整数恰好出现一次。 最后还得注意行末不能有空格! AC code: 12345678910111213141516171819202122232425262728293031323334#include<bits/stdc++.h>using namespace std;int n,k;int a[1000005],tmp=1;int main(){ cin>>n>>k; if(k>n) //0个,随便来 { for(;tmp<=n;tmp++) { a[tmp]=tmp; } } else //按余数来 { for(int i=0;i<k;i++)//余数的可能性 { for(int j=0;j*k+i<=n;j++) { if(j*k+i>0) { a[tmp++]=j*k+i; } } } } for(int i=1;i<n;i++) { cout<<a[i]<<" "; } cout<<a[n]; //无空格 return 0; } 前一篇 【并非广告】免费二级域名申请 后一篇 P13428 [GCJ 2009 Qualification] Alien Language 题解
说些什么吧!