循环数

  题目链接:循环数,一开始我还以为要用高精度按照题意一个个数去乘来判断,后来百度了下发现原来对于"循环数"早就有人去研究的了,先附上几个链接:

  Cyclic Number

  Artin‘s Constant

  循环数

  妙趣横生的完全循环数

  按照百科上已算好的几个循环数就能打表直接判断了:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<map>
 5 #include<algorithm>
 6 using namespace std;
 7
 8 string s[10] = {
 9     "142857",       // (6位)
10     "0588235294117647",     // (16位)
11     "052631578947368421",       // (18位)
12     "0434782608695652173913",       // (22位)
13     "0344827586206896551724137931",     // (28位)
14     "0212765957446808510638297872340425531914893617",    // (46位)
15     "0169491525423728813559322033898305084745762711864406779661",    // (58位)
16     "016393442622950819672131147540983606557377049180327868852459",      // (60位)
17 };
18
19 int wei[10] = {7, 17, 19, 23, 29, 47, 59, 61};
20
21 char p[70];
22
23 int main() {
24     map<string,int> m;
25     for(int i = 0; i <= 7; ++i)
26         m[s[i]] = s[i].size() + 1;
27     while(~scanf("%s",p))
28         puts(m[p] ? "Yes": "No");
29     return 0;
30 }

时间: 2024-08-07 04:09:00

循环数的相关文章

洛谷 P1467 [USACO2.2]循环数 Runaround Numbers

题目描述 循环数是那些不包括0且没有重复数字的整数(比如81362)并且还应同时具有一个有趣的性质, 就像这个例子: 如果你从最左边的数字开始(在这个例子中是8)向右数最左边这个数(如果数到了最右边就回到最左边),你会停止在另一个新的数字(如果停在一个相同的数字上,这个数就不是循环数).就像: 8 1 3 6 2 从最左边接下去数8个数字: 1 3 6 2 8 1 3 6 所以下一个数字是6 重复这样做 (这次从"6"开始数6个数字) 并且你会停止在一个新的数字上: 2 8 1 3 6

2.2.3 RUNAROUND NUMBERS 循环数

PS:最近工作比较忙,所以把以前在学校做acm的时候写的一些解题报告发出来 http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=2327 题目大意:(如题) 输入输出:(如题) 解题思路:从开始数后一个数往后枚举,然后判断其是不是循环数,如果是就输出退出. void transfer() //转换函数,将整数的每一位数提取出来 { int i; n=0; while(tmp>0) { i=tmp%10; tmp/=10; tmpstr[n]=i;

(1)用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。

采用循环链表,用取余操作做.(VS2010) #include <stdio.h>#include <stdlib.h>#include "stdafx.h"#include <iostream>typedef struct node{ int data; node* next;}node; void CreatList(node*& head, node*& tail, int n){ if(n<1){ head = tail

delphi的多线程编程

多线程的基本概念 win 98/nt/2000/xp 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用cpu 运行时间和资源,或者说,把cpu 时间划成片,每个片分给不同的线程,这样,每个线程轮流的“挂起”和“唤醒”,由于时间片很小,给人的感觉是同时运行的. 多线程带来如下好处:(自己阅读) 1)避免瓶颈: 2)并行操作: 3)提高效率: 在多线程中,通过优先级管理,可以使重要的程序优先操作,提高了任务管理的灵活性. 另一方面,在多cpu 系统中,可以把不同的线程在不同的

7.员工转正问题的实现-PHP

先描述问题:公司创立只有一位员工,每名员工经3月后转正,成为正式员工后可每月推荐一名新员工,新员工经三月后,转正又可推荐新员工:假设公司第一位员工也需要试用期,并且所有员工均不离职,请算出第n月员工数量. 分析:经过归纳分析:得出以下数据1,1,1,2,3,4,6,9,13,,,,, 实现代码如下: <?php /* *转正问题 *1,1,1,2,3,4,6,9,13,,,,, */ function rabit($month){ //前三个月员工数为1人 if($month<=3){ $nu

IP命令

ip命令是Linux下较新的功能强大的网络配置工具. 1 功能 ip命令用来显示或操纵Linux主机的路由.网络设备.策略路由和隧道. 2用法 Usage: ip [ OPTIONS ] OBJECT { COMMAND | help } ip [ -force ] -batch filename -force:不要终止批处理模式中的错误 -b:-batch filenam,从提供的文件或标准输入中读取命令并调用它们,第一次失败将导致IP终止 3参数与选项 OBJECT := { link |

50个技巧提高你的PHP网站程序执行效率

1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP手册中说echo是语言结构,不是真正的函数,故 把函数加上了双引号). 2.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 3.$row['id'] 的速度是$row的7倍. 4.echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2. 5.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用

华为C/C++笔试题&amp;答案

1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量. 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用 2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必. 2) 引用初始化以后不能被改变,指针可以改变所指的对象.

CodeFroces 758C - Unfair Poll

题意: 老师点名,顺序是1 -- n -- 1 排为一个循环,每列为1 -- m的顺序, 问点到最多次数和最少次数的人的次数以及(x,y)被点的次数. 分析: 由于点名有循环,故可先判断出每一个循环每个人被点名的次数,再乘以循环数,为答案一部分. 最后一个循环结束后k还有余数,从(1,1)暴力模拟,因为n*m才10000, 再加上前面的,就能得出答案. 注意 n=1 需要特判. 1 #include <bits/stdc++.h> 2 using namespace std; 3 #defin