hdu 1153 magic bitstrings

题目大意

一个质数p,现在让你求一个p-1长度的“01魔法串”。关于这个魔法串是这么定义的: 
    我们现在把这个串经过一段处理变成一个长宽均为p-1的矩阵,对于第i行的串,是由原来的串按每i位取得的。如果这个矩阵每行的串满足:和原来的串相等或是原来的串按位取反,我们就称这个串是魔法串。(说了一大堆如果还没看懂就去问题底下的Discuss看吧….)


题解

一开始热衷于讨论第一行和最后一行的关系…结果什么也没看出来…后来看了别人的题解,才发现自己有多蠢。 
    我们把前两行先写出来:

Column1 Column2 Columnp−1
a1.mod.p a2.mod.p ap−1
a2.mod.p a4.mod.p a[2∗(p−1)].mod.p

我们可以看到,讨论表格前两列的话 a1.mod.p 和 a2.mod.p 如果相等,那么 a2.mod.p 和 a4.mod.p 一定也相等,所以我们得到 a1.mod.p 和 a4.mod.p 相等;而如果 a1.mod.p 和 a2.mod.p 不相等的话,我们同样推出 a1.mod.p 和 a4.mod.p 相等,所以 a1.mod.p 和 a4.mod.p 一定是相等的。 
    同理可以得到 a1.mod.p 和 a9.mod.p 相等、 a1.mod.p 和 a16.mod.p 相等…..所以我们得出一个结论: ai2.mod.p 都是相等的,其余各项也都是相等的。 
    为了字典序最小,我们把所有 ai2.mod.p 置为0,其余各项置为1,除了2以外,对于所有的质数都是有解的。

把矩阵列出来

a[1%n], a[2%n], a[3%n], ..., a[n-1]                  (1)

a[2%n], a[4%n], a[6%n], ..., a[2(n-1)%n]       (2)

a[3%n], a[6%n], a[9%n], ..., a[3(n-1)%n]       (3)

...

比较 (1), (2)

发现:

如果 a[1%n] != a[2%n],那么 a[2%n] != a[4%n],那么 a[1%n] == a[4%n];

如果 a[1%n] == a[2%n],那么 a[2%n] == a[4%n],那么 a[1%n] == a[4%n]。

所以 a[1%n] == a[4%n]

同样的方法得到:

a[1%n] == a[9%n],

a[1%n] == a[16%n],

....

所有下标是 i 平方 mod n 都相等。

下标不是 i 平方 mod n 都相等。

为了字典顺序最小,并且避免整个数列都是同一个数(题目要求 non-constant),令 a[1%n] = a[4%n] = a[9%n] = ... = 0,其他数都是 1,这样符合题意。

#include <iostream>
#include <cstring>
#include <cstdio>
#define LL long long using namespace std; LL p;
bool flag[]; int main()
{
while(scanf("%I64d",&p),p!=)
{
memset(flag,,sizeof(flag));
if (p==)
{
printf("Impossible\n");
continue;
}
for (LL i=;i<p;i++) flag[(i*i)%p]=;
for (int i=;i<p;i++) printf("%d",!flag[i]);
printf("\n");
}
return ;
}
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector> int main () {
long long p;
while ((std::cin >> p) && p) {
if (p == ) {
std::cout << "Impossible\n";
continue;
}
std::vector <int> v (p, );
for (long long i=; i<p; ++i) {
v [i * i % p] = ;
}
std::copy (v.begin() + , v.end(), std::ostream_iterator <int> (std::cout));
std::cout << "\n";
}
return ;
}

HDU 1153 magic bitstrings(读题+)的更多相关文章

  1. hdu 3268 09 宁波 现场 I - Columbus’s bargain 读题 最短路 难度:1

    Description On the evening of 3 August 1492, Christopher Columbus departed from Palos de la Frontera ...

  2. 杭电ACM2076--夹角有多大(题目已修改,注意读题)

    杭电ACM2076--夹角有多大(题目已修改,注意读题) http://acm.hdu.edu.cn/showproblem.php?pid=2076 思路很简单.直接贴代码.过程分析有点耗时间. / ...

  3. HDUOJ--2079选课时间(题目已修改,注意读题)

    选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. 【托业】【全真题库】TEST01-03-阅读题

    [托业][全真题库]TEST01-03-阅读题

  5. Codeforces 61B【怪在读题】

    搞不懂为什么DFS的写法崩了,然后乱暴力,因为题意不是很懂... 主要还是读题吧(很烦 #include <bits/stdc++.h> using namespace std; type ...

  6. Codeforces 659B Qualifying Contest【模拟,读题】

    写这道题题解的目的就是纪念一下半个小时才读懂题...英文一多读一读就溜号... 读题时还时要静下心来... 题目链接: http://codeforces.com/contest/659/proble ...

  7. Day1 读题解题提升

    The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 昨晚做了训练赛,然后读题又自闭了QAQ. Average Score ZOJ - 3819 题意: ...

  8. HDU 4572 Bottles Arrangement(找规律,仔细读题)

    题目 //找规律,123321123321123321…发现这样排列恰好可以错开 // 其中注意题中数据范围: M是行,N是列,3 <= N < 2×M //则猜测:m,m,m-1,m-1 ...

  9. hdu 2079 选课时间(题目已修改,注意读题)

    http://acm.hdu.edu.cn/showproblem.php?pid=2079 背包 #include <cstdio> #include <cstring> # ...

随机推荐

  1. 关于json输出为null?

    原因: 该字符中含了ASCII码ETB控制符,即\x17导致json解析失败   解决方案: $params = preg_replace('/[\x00-\x1F]/', '', $params); ...

  2. MySQL之查询性能优化(三)

    MySQL查询优化器的局限性 MySQL的万能“嵌套循环”并不是对每种查询都是最优的.不过还好,MySQL查询优化只对少部分查询不适用,而且我们往往可以通过改写查询让MySQL高效地完成工作. 关联子 ...

  3. FIFO页面淘汰算法

    1.优异虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行以下访问页号序列后1,3,4,2,1,3,5,1,2,5,4,2,会产生多少次缺页(9) 在 ...

  4. ElasticSearch学习笔记(三)-- 查询

    1. URISearch详解与演示 2. QueryDSL简介 3. 字段类查询简介及match-query 4. 相关性算分 5. match-phrase-query 6. query-strin ...

  5. CC3200串口UART1配置

    1. 首先打开工程\CC3200SDK_1.1.0\example\adc\ewarm,以ADC例程为例,修改串口引脚复用,先看下引脚图 2. 修改引脚复用代码 void PinMuxConfig(v ...

  6. Tomcat详解及SNS系统的部署实现

    Tomcat详解及SNS系统的部署实现   http://jungege.blog.51cto.com/4102814/1409290

  7. jpg、png、gif图片格式的浅析

    原文地址:图片格式与设计那点事儿 之前面试时被面试官问到了jpg.gif.png格式的区别,当时就扯了一些,感觉都是扯淡,上网搜了下,分享一篇文章 第一次写技术博客,有不尽如人意的地方,还请见谅和指正 ...

  8. 阿里云ECS Ubuntu安装PHP+Mysql+Apache+Nginx+Redis+Discuz

    http://www.linuxdiyf.com/linux/13662.html http://blog.csdn.net/wangnan537/article/details/47868659 h ...

  9. Pascal小游戏 文件的产生

    一个整人的Pascal小程序 运行之后硬盘里面会有一大堆垃圾,当然更好的方法当然不是这样做! var a,b,c,d:char;beginfor a:='0' to '9' dofor b:='0' ...

  10. 【APUE】Chapter8 Process Control

    这章的内容比较多.按照小节序号来组织笔记的结构:再结合函数的示例带代码标注出来需要注意的地方. 下面的内容只是个人看书时思考内容的总结,并不能代替看书(毕竟APUE是一本大多数人公认的UNIX圣经). ...