正解:构造

解题报告:

传送门!

这题俩问嘛,就分成两个问题港QwQ

就按顺序趴,先港第一问QwQ

首先要发现,n在膜n意义下就是0嘛

那作为前缀和的话显然它就只能放在第一个

然后再想下,发现,如果n是奇数那1+...+n显然是n的倍数,就又是个膜意义下=0的,GG

偶数显然麻油关系咯QwQ

所以我们就可以先特判下,如果n是奇数直接GG辣(昂n==1要特判下吼QwQ

然后显然的是既然有解了就是一定能表示出所有的[0,n-1]

然后我们就这么想吼(以下表示都是在膜意义下的QwQ

1+n=1

3+(n-2)=1

5+(n-4)=1

...

!有没有get到规律

对就是说,我们把1和n放相邻,3和(n-2)放相邻,5和(n-4)放相邻

但是又有个问题鸭QAQ

就是,我们这样子只能表示出[1,n/2]嘛

然后考虑[n/2+1,n]显然是在这个过程中表示出来了

然后我jio得我前面列的时候就很清楚地提醒出来辽?

就是

(n-2)+1=n-1

(n-4)+2=n-2

(n-6)+4=n-3

综上,T1解决辽

get?

然后就港第二问QwQ

第二问依然是先利用n%n=0的特殊性质

所以n当然放在最后一个咯QwQ

然后这时候就要发现那就得(n-1)!不是n的倍数鸭

然后合数就被排除掉辽(n==4也要特判QwQ

然后剩下的就hin爽鸭

可以构造

1 2/1 3/2 4/3 5/4 ...

能get到的趴?

然后显然是逆元走一波就over辣!

然后这题我第一次交只有79pts,,,放下错解给大嘎参考下QAQ

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i) inline ll read()
{
register char ch=getchar();register ll x=;register bool y=;
while(ch!='-' && (ch>'' || ch<''))ch=getchar();
if(ch=='-')ch=getchar(),y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
return y?x:-x;
}
inline void wk1()
{
register ll n=read();
if(n!= && (n&)){printf("0\n");return;}
if(n==){printf("2 1\n");return;}
printf("2 %lld ",n);rp(i,,n)(i&)?printf("%lld ",n-i+):printf("%lld ",i-);printf("\n");
}
inline void work1()
{
register ll T=read();
while(T--)wk1();
}
inline bool pd(ll n)
{
if(n==)return ;
rp(i,,sqrt(n))if(n%i==)return ;
return ;
}
inline ll ksm(ll x,ll y)
{
ll t=y,ans=;y-=;
while(y)
{
if(y&)ans=ans*x%t;
y>>=;x=x*x%t;
}
return ans;
}
inline void wk2()
{
register ll n=read();
if(pd(n)){printf("0\n");return;}
printf("2 1 ");rp(i,,n-)printf("%lld ",i*ksm(i-,n)%n);printf("%lld\n",n);
}
inline void work2()
{
register ll T=read();while(T--)wk2();
} int main()
{
ll X=read()-;X?work2():work1();
return ;
}

upd:我知道我代码错哪儿了QAQ大嘎引以为患一下QAQ就是我题解里不是港了4要特判嘛然后我忘记特判了,,,QAQ好那我放下我A了的代码yep!

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i) const ll N=+;
ll inv[N]; inline ll read()
{
register char ch=getchar();register ll x=;register bool y=;
while(ch!='-' && (ch>'' || ch<''))ch=getchar();
if(ch=='-')ch=getchar(),y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
return y?x:-x;
}
inline void wk1()
{
register ll n=read();
if(n!= && (n&)){printf("0\n");return;}
if(n==){printf("2 1\n");return;}
printf("2 %lld ",n);rp(i,,n)(i&)?printf("%lld ",n-i+):printf("%lld ",i-);printf("\n");
}
inline void work1()
{
register ll T=read();
while(T--)wk1();
}
inline bool pd(ll n)
{
if(n==)return ;
rp(i,,sqrt(n))if(n%i==)return ;
return ;
}
inline void wk2()
{
register ll n=read();
if(n==){printf("2\n1 3 2 4\n");return;}
if(n==){printf("2\n1\n");return;}
if(pd(n)){printf("0\n");return;}
printf("2\n");
inv[]=;printf("1 ");
rp(i,,n)inv[i]=(ll)n-(inv[n%i]*(n/i))%n;
rp(i,,n-)printf("%lld ",i*inv[i-]%n);
printf("%lld\n",n);
}
inline void work2()
{
register ll T=read();while(T--)wk2();
} int main()
{
ll X=read()-;X?work2():work1();
return ;
}

洛谷P3599 Koishi Loves Construction 构造的更多相关文章

  1. C 洛谷 P3599 Koishi Loves Construction [构造 打表观察]

    题目描述 Koishi决定走出幻想乡成为数学大师! Flandre听说她数学学的很好,就给Koishi出了这样一道构造题: Task1:试判断能否构造并构造一个长度为的的排列,满足其个前缀和在模的意义 ...

  2. P3599 Koishi Loves Construction——构造题

    题目 Task1:试判断能否构造并构造一个长度 $n$ 的 $1...n$ 的排列,满足其 $n$ 个前缀和在模 $n$ 的意义下互不相同 Task2:试判断能否构造并构造一个长度 $n$ 的 $1. ...

  3. 【题解】P3599 Koishi Loves Construction

    [题解]P3599 Koishi Loves Construction \(\mod n\) 考虑如何构造,发现\(n\)一定在第一位,不然不行.\(n\)一定是偶数或者是\(1\),不然 \(n|\ ...

  4. 洛谷P3602 Koishi Loves Segments(贪心,multiset)

    洛谷题目传送门 贪心小水题. 把线段按左端点从小到大排序,限制点也是从小到大排序,然后一起扫一遍. 对于每一个限制点实时维护覆盖它的所有线段,如果超过限制,则贪心地把右端点最大的线段永远删去,不计入答 ...

  5. E 洛谷 P3598 Koishi Loves Number Theory[数论]

    题目描述 Koishi十分喜欢数论. 她的朋友Flandre为了检测她和数论是不是真爱,给了她一个问题. 已知 给定和个数,求对取模. 按照套路,呆萌的Koishi当然假装不会做了,于是她来向你请教这 ...

  6. D 洛谷 P3602 Koishi Loves Segments [贪心 树状数组+堆]

    题目描述 Koishi喜欢线段. 她的条线段都能表示成数轴上的某个闭区间.Koishi喜欢在把所有线段都放在数轴上,然后数出某些点被多少线段覆盖了. Flandre看她和线段玩得很起开心,就抛给她一个 ...

  7. 洛谷P3602 Koishi Loves Segments 贪心

    正解:贪心 解题报告: 传送门! 首先在学习贪心的入门题的时候我们就知道,当x=1的时候,也就是每条线段不能相交的时候的做法——就按右端点排序然后能选就选,也就是会议安排问题,原因显然?就你选右端点更 ...

  8. 题解-Koishi Loves Construction

    题解-Koishi Loves Construction 前缀知识 质数 逆元 暴搜 Koishi Loves Construction 给定 \(X\),\(T\) 组测试数据,每次给一个 \(n\ ...

  9. 洛谷 P1580 yyy loves Easter_Egg I

    洛谷 P1580 yyy loves Easter_Egg I 题解: 队列+字符串 #include <cstdio> #include <string> #include ...

随机推荐

  1. [转]linux下释放文件内存

    在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好.但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了. ...

  2. 【重要】U3D存放本地游戏存档——不同平台载入XML文件的方法——IOS MAC Android

    在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不支持如下方法载入XML文件: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load( ...

  3. 使用dom4j解析xml为json对象

    import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j. ...

  4. Android学习之位图BitMap

    BitMap代表一张位图,扩展名可以是.bmp或者.dib.位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2.4.8.16.24和32位色彩.例如 ...

  5. Linux平台下mysql的ODBC配置方法

    在安装配置之前, 需要先大概了解一下MyODBC的架构. MyODBC体系结构建立在5个组件上,如下图所示: Driver Manager: 负责管理应用程序和驱动程序间的通信, 主要功能包括: 解析 ...

  6. python下安装Scikit-learn

    安装SK-Learn需要依赖的Python安装包有: Python (>= 2.6), NumPy (>= 1.3), SciPy (>= 0.7), 下载python的各种包的地址 ...

  7. H5 password自动记录取消

    最近完成一个项目时需要取消谷歌浏览器的密码自动填充功能,为了用户方便,大多浏览器都有保存某个网站的密码并在后面再打开这个网站且需要输入密码的时候自动填充.这个功能是方便,但是我们有时候不需要使用这个功 ...

  8. Sencha Touch 实战开发培训 视频教程 第二期 基础提高篇 预告

    “抛砖网”国内首家首创纯实战型培训机构,提供在线培训.技术指导及答疑! 团队通过360全方位技术培训+1度手把手技术指导,保证每一个学员能最快掌握实际工作技能: 让每一个学员都能站在我们的肩膀上,展翅 ...

  9. 安装ORACLE_RAC遇到的问题与解决方法

    while running: /u01/app/oracle/product/10.2.0/db_1/root.sh Checking to see if Oracle CRS stack is al ...

  10. X-Requested-With导致CSRF失败

    在漫漫渗透之路中,眼前一亮的发现一个站.Referer字段没有检查,POST参数中的动态token也没有检查,这不是带一波CSRF的节奏嘛.但是遇到一个之前我没遇到的问题导致我CSRF失败,这个问题或 ...