时钟巡回

数学女孩2--费马大定理

第一章 将无限宇宙尽收掌心

时钟巡回 之 完全巡回的规律

问题描述:  将圆12 等分, 12个点分别标记为【1...12】。 从12点开始每隔 k 个点连一条线。如果 k == 1, 则第一条连线是(12, 2)。完全巡回的定义是 选定某个K, 重复连线的过程,最终圆上所有点都被连接。

进一步的抽象: 另 F(x) =  (x + k) mod 12, k > 0,  初始状态下定义域中仅有一个元素即起点, 每次计算完毕都有 x = F(x); 即定义域中始终只有一个值,若 F(x) 的值域为所有的顶点的标号, 则称为完全巡回。 用代码描述如下:(在最后面)

更进一步的思考:

在连线的时候有顺时针和逆时针的区别, K 取 11 和  1 时,就是逆时针和顺时针将12个点相连。而 11 + 1 ==12。 若 a + b == 12, 则 k 取 a 和 k 取 b 效果是一样的。 (逆时针查 7 个点是5, 顺时针查 5 个点还是 5) 由此可将问题的求解范围缩小一半(只需考虑 k 取【1...6】即可)。  若 K 取 2 3 4 6, F(x) 总是一倍一倍的增上去...

最后我的答案:

对于 K【1...11】;

k =  k<=6 ? k : 12-k;

if( 12 % k || k == 1 )

return true;

return false;

书上的解:

m 是圆上点数

if(gcd (m, k) == 1)

return true;

return false;

//////////////////////////////////////////////////////////////

#include <iostream>
#include <cstring>
using namespace std;
#define MAXN 13

int ans[MAXN], from, to, i, j;    // ans[MAXN] 存放值域
int main(){
    for(i=1; i<=11; ++i){          //由于取余运算中会有 0 的出现, 所以标号化为【0...11】
        from = 11;
        to = 0;
        memset(ans, 0, sizeof(ans));
        
        
        while(to != 11){              // 可以肯定最终一定会回到 最初的起点
               to = (from + i) % 12;
               from = to;
               ans[to] = 1;
        }

for(j=0; j<=11; ++j)
              if(ans[j] == 0)
                 break;                 
         if(j==12)
            cout << " " << i;   
    }
    return 0;
}

//////////////////////////////////////////////////////////////

时间: 2024-10-08 16:36:01

时钟巡回的相关文章

弹幕游戏子弹模式(占坑待续)

本文先占坑,我后续还会逐渐加入各种子弹模式. 首先,感谢UniBulletHell帮助我做了一些前期工作,这样可以更快的进入节奏.推荐想要使用unity制作弹幕类的同学,可以研究一下. UniBulletHell,它提供了很多基本的pattern和基本技术. 对于弹幕类游戏的制作,我也刚刚接触,我这几天还了解以下技术,BulletML,Danmaku Engine,DanmakU,DanmakX,CrazyStorm. 我不在此一一分析,诸位找到适合自己的就可以了. 上述gif给出的子弹模式均为

门控时钟-理论分析 ---- 转载

转载自:http://www.chipsbank.com/news_detail/newsId=123.html 门控的基本要求: 1. 所需要的沿(对于正沿触发的寄存器是正沿,对于负沿触发的寄存器是负沿)不增加,不减少: 1. 不会产生毛刺: 1. 使用后功耗要能够降低: 1. 最好面积还会减小. 1. 上升沿触发的门控时钟的结构研究:应用与上升沿触发的寄存器的门控. 1. 直接与门结构: 1. 高电平使能Latch + 与门结构: 1. 低电平使能Latch + 与门结构: 1. 波形研究:

【JAVA语言程序设计基础篇】--图形-- 三种时钟--增强对类的理解和应用

1.显示任意时间时钟 2.设置三个可见性属性 分别表示时针,分针,秒针的可见性 3.一个精细的时钟 主类:StillClock @SuppressWarnings("serial") class DetailedClock extends JPanel { private int hour; private int minute; private int second; protected int xCenter, yCenter; protected int clockRadius;

第三部分:S5PV210_时钟部分_1

时钟部分 (1)时钟域 S5PV210一共有三个时钟域:MSYS,DSYS,PSYS MSYS:(main system)主时钟域,包括CPU,DDR内存条,IROM和IRAM等 DSYS:(display system)显示时钟域,就是一般的和视频有关的就在这个时钟域中,如HDMI,TVENC... PSYS:(peripheral system)外围时钟域,就是GPIO接口,I2C接口,UART接口等这些外围设备就在这个时钟域上. 每个时钟域通过一条BRG(异步总线的桥梁)连接在一起. (2

Android 开发第七弹:简易时钟(秒表)

本文承接,Android 开发第五弹:简易时钟(闹钟) 和 Android 开发第六弹:简易时钟(计时器),这一部分是关于秒表的. 布局 同样是新建一个类(StopWatchView)并扩展自LinearLayout,并将其用作布局. <myapplication.nomasp.com.clock.StopWatchView android : id = "@+id/tabStopWatch" android : layout_width = "match_parent

(16)给树莓派B+ 安装一个实时时钟芯片DS1302

在这里首先感谢glgoo在google被墙的情况下提供搜索功能,还要感谢 http://wiringpi.com/ 以及github,尽管自己眼瞎,几经波折还是发现了尘封已久的少林"七十二绝技",没错,每种绝技都能克制一个树莓派GPIO控制外设的问题,七十二绝技的核心就是wiringpi这个为Pi GPIO写的C语言库了,而每种绝技则暗藏在wiringPi/examples/目录下,这里就不一一罗列了,大家想学什么招式,就去看每个example,都非常简短. 其实早在第9篇文章&quo

AppWidget 如android桌面上的时钟

一. 1.App widget 是在home桌面的一个空间,比如时钟,播放器播放时小图标可以点击下一首等那个. 2.AppWidgetProviderInfo 对象: 为App Widget 提供元数据,包括布局,更新频率等数据,这个对象被定义在xml文件当中. 3.AppWidgetProvider : 定义一个App Widget 的基本生命周期函数. 二.创建App Widget步骤: 1.定义AppWidgetProviderInfo : 在res/xml文件夹中定义 example_a

时钟+温度+遥控设置,综合时钟例子

时钟+温度+遥控设置,综合时钟例子6月30日到手的二手单片机开发板,今天做个综合的时钟例子,包含代码和仿真.做个近期的学习总结. 按独立键盘K1和红外遥控的EQ为设置键.按独立键盘K2和红外遥控的VOL+为加键.按独立键盘K3和红外遥控的VOL-为减键. 手摸温度传感器,当温度超过 34℃ 的时候点亮LED灯,模拟启动的设备. 程序有很多细节没有优化,主要是学习,lcd1602显示,独立建扫描,红外遥控,ds1302时钟芯片,ds18b20温度传感器. 实时时钟综合应用,源代码和仿真下载http

第35天:时钟效果

时钟效果案例 1.得到现在的时分秒2.旋转角度原理一圈360°   60s   1s/6°旋转second.style.WebkitTransform="rotate(60deg)";//每秒旋转60度 案例: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>时钟效果</