洛谷P3599 Koishi Loves Construction 构造
正解:构造
解题报告:
这题俩问嘛,就分成两个问题港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 构造的更多相关文章
- C 洛谷 P3599 Koishi Loves Construction [构造 打表观察]
题目描述 Koishi决定走出幻想乡成为数学大师! Flandre听说她数学学的很好,就给Koishi出了这样一道构造题: Task1:试判断能否构造并构造一个长度为的的排列,满足其个前缀和在模的意义 ...
- P3599 Koishi Loves Construction——构造题
题目 Task1:试判断能否构造并构造一个长度 $n$ 的 $1...n$ 的排列,满足其 $n$ 个前缀和在模 $n$ 的意义下互不相同 Task2:试判断能否构造并构造一个长度 $n$ 的 $1. ...
- 【题解】P3599 Koishi Loves Construction
[题解]P3599 Koishi Loves Construction \(\mod n\) 考虑如何构造,发现\(n\)一定在第一位,不然不行.\(n\)一定是偶数或者是\(1\),不然 \(n|\ ...
- 洛谷P3602 Koishi Loves Segments(贪心,multiset)
洛谷题目传送门 贪心小水题. 把线段按左端点从小到大排序,限制点也是从小到大排序,然后一起扫一遍. 对于每一个限制点实时维护覆盖它的所有线段,如果超过限制,则贪心地把右端点最大的线段永远删去,不计入答 ...
- E 洛谷 P3598 Koishi Loves Number Theory[数论]
题目描述 Koishi十分喜欢数论. 她的朋友Flandre为了检测她和数论是不是真爱,给了她一个问题. 已知 给定和个数,求对取模. 按照套路,呆萌的Koishi当然假装不会做了,于是她来向你请教这 ...
- D 洛谷 P3602 Koishi Loves Segments [贪心 树状数组+堆]
题目描述 Koishi喜欢线段. 她的条线段都能表示成数轴上的某个闭区间.Koishi喜欢在把所有线段都放在数轴上,然后数出某些点被多少线段覆盖了. Flandre看她和线段玩得很起开心,就抛给她一个 ...
- 洛谷P3602 Koishi Loves Segments 贪心
正解:贪心 解题报告: 传送门! 首先在学习贪心的入门题的时候我们就知道,当x=1的时候,也就是每条线段不能相交的时候的做法——就按右端点排序然后能选就选,也就是会议安排问题,原因显然?就你选右端点更 ...
- 题解-Koishi Loves Construction
题解-Koishi Loves Construction 前缀知识 质数 逆元 暴搜 Koishi Loves Construction 给定 \(X\),\(T\) 组测试数据,每次给一个 \(n\ ...
- 洛谷 P1580 yyy loves Easter_Egg I
洛谷 P1580 yyy loves Easter_Egg I 题解: 队列+字符串 #include <cstdio> #include <string> #include ...
随机推荐
- Flash XSS 漏洞实例
www.bsdxm.com/zeroclipboard/ZeroClipboard.swf?id=\"))}catch(e){alert(/xss/);}//&width=500&a ...
- ASP.NET MVC入门到精通——第一个ASP.NET MVC程序
开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递给View. View是显示数据的模板 Url请求→Cont ...
- mybatis 之 parameterType="list"1
/** * 判断当前分类产品分类的父分类是否已经添加到标签分类中, * 如果存在 返回true,否则,返回false * @param catalogId * @return */ public Se ...
- 原:android4.2.2蓝牙源码阅读--bluedroid部分
概念: GKI:统一内核接口 BTE栈: BTU栈:BTU栈开始前必须调用BTE栈初始化 代码阅读: /external/bluetooth/bluedroid/hci/:HCI library实现 ...
- 【Mac】WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
使用Mac 自带终端 链接服务器时候,报错如下 处理办法: 第一种: 直接删除: /users/username/.ssh/known_hosts 文件 第二种: ssh-keygen -R ...
- 【swoole2.0】 PHP + swoole2.0 初体验
背景: centos7 PHP7.1 swoole2.0 准备工作: 一. swoole 扩展安装 1 下载swoole cd /usr/local wget -c https://git ...
- 【Spring源码分析系列】启动component-scan类扫描加载过程
原文地址:http://blog.csdn.net/xieyuooo/article/details/9089441/ 在spring 3.0以上大家都一般会配置一个Servelet,如下所示: &l ...
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...
- 异构GoldenGate 12c 双向复制配置
1.配置window,添加checkpoint表(本文windows和linux互为source和target) GGSCI (WIN-GM5PVS1CILH) 1> view param ./ ...
- vue2.0笔记《一》列表渲染
内容中包含 base64string 图片造成字符过多,拒绝显示