n个1组成的整数能被2013整除c语言,求大神解算法,“编写程序,求n至少为多大时,n个1组成的整数能被2013 整除。”...

编写程序,求n至少为多大时,n个1组成的整数能被2013 整除。

使用python黑科技:

i = 1

while int('1' * i) % 2013:

i += 1

print(i)

不使用黑科技:

i = s = t = 1

while s % 2013:

i += 1

t = t * 10 % 2013

s = (s + t) % 2013

print(i)

而事实上可以从数论的角度看。

2013=3*11*61

,故:

欲被3整除,n得是3的倍数

欲被11整除,n得是2的倍数

故 n 是 6 的倍数。

而n个1若被 61 整除,则n个9亦然。因为 61 和 10 互素,由费马小定理知 60 符合条件。故只须尝试 6,12,30 这三个数即可。

楼上已经有答案了,但私以为没有解释的很详细,因此才有此次回答。

首先,先列下本次回答的题纲:

代码解法(由于没有做要求,就用JS实现了)

数论解法(费马小定理)

代码解法

function getMinDividedNum(n) {

var sum = 1,

len = 1;

while (sum % n) {

len++;

sum = (sum % n) * 10 + 1;

}

return len;

}

// 测试用例-注意,并不是所有数字都能输入,只能是素数或者由素数乘积组成的数

var num = 2013;

console.log('n:' + num + ',len:' + getMinDividedNum(num));

//输出:n:2013,len:60

代码详解

以上代码的核心其实就是判断

1,11,111

等N位数能否被n整除,也就是

sum=sum*10+1

但是考虑到最大值边界问题,于是将上述公式换为了

sum= (sum % n)*10+1

之所以能这样转换,是因为: (举例)

譬如判断

111

是否能被3整除

可以是

(1*10+1)*10+1

也可以是判断

第一步: 1%3=1 (1整除3的余数为1)

第二步: 11%3=2 (11整除3的余数为2)

第三步: 21%3=0 (符合条件)

换一个思路,假如判断(8+7)是否能被3整除,那么我们只需要现将它们能被3整除的部分去除调,用余数累加起来判断即可,也就是说只需要判断

2+1

能否被3整除即可

数论解法

费马小定理简介

首先得知道的是,费马小定理是欧拉定理的一种特殊情况,欧拉定理描述的是关于同余的性质,而费马定理如下:

假如a是整数,p是质数,且a,p互质(两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1

a^(p-1)%p=1

费马小定理在本题中的应用

关键来了,本题与费马小定理有什么关系呢?

如上楼中有人提到,本题中,

2013=3*11*61

,所以需要满足

能被3整除

能被11整除

能被61整除

而前两者很容易就根据下面的条件判断出:

若一个整数的数字和能被3整除,则这个整数能被3整除。

若一个整数的奇位数字之和与偶位数字之和的差能被11整除,则这个数能被11整除。

因此马上就可以将条件转换为:

n得是3的倍数(因为n个1加起来要是3的倍数)

n得是2的倍数(奇位和偶数直接的差为0)

因此n是6的倍数

n个1这个数(x)能被61整除

接下来就剩下了一个问题: n个1能被61整除,需要满足什么?接下来费马小定理就派得上用处了。

我们可以得知: 61和10互素。

所以套用上述的公式,可以得出:

10^(60)%61=1

所以:

10^(60)-1=0 (mod 61)

10^60 -1

就是

60个9组成的数

,也就是说 60个9组成的数能够被61整除。

那么自然60个1组成的数能够被61整除(因为61与3无关),同时60又是6的倍数,因此满足条件。

更新,之前有不严谨之处

继续判断,60的符合条件的约数(6的倍数)有,6,12,30,60。

检查计算得出后可以知道只有60满足条件。

因此得出了结论: n至少为60时,n个1组成的数能够被2013整除

function sum($num,$int=1){

$sum = 0;

foreach (range(0,$num-1) as $key => $value) {

$sum += $int*pow(10,$value);

}

return $sum;

}

$i=1;

while($i++) {

if (sum($i) % 2013 == 0) {

echo $i;//26

break;

}

}

var num = 2013;

var pow = Math.pow;

var floor = Math.floor;

var result = '';

var temp = 0;

var i = 0;

var flag = true;

while(flag){

for (var n = 0; n < 10; n++) {

if ((3 * n + (temp%10)) % 10 === 1) {

result = n + result;

temp = floor((num*result)/pow(10, i + 1));

break;

}

}

if(/1{3,4}/.test(temp.toString())){

flag = false;

}

i++;

}

console.log(result);//55196776508251918087983661754153557432245956836120770547

console.log(result*2013);//1.1111111111111112e+59

跟楼上大神推理的结果一致,60个

73bccf0c0b4af35beddca4274520fb45.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础知识点复习

转载&#xff1a;https://mp.weixin.qq.com/s/M-6RSRcRd3X93cR7VXpanw Java概述 1.什么是Java&#xff1f; Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和…

为什么都说Dubbo不适合传输大文件?Dubbo支持的协议

背景 之前公司有一个 Dubbo 服务&#xff0c;内部封装了腾讯云的对象存储服务 SDK&#xff0c;是为了统一管理这种三方服务的SDK&#xff0c;其他系统直接调用这个对象存储的 Dubbo 服务。用来避免因平台 SDK 出现不兼容的大版本更新&#xff0c;导致公司所有系统修改跟着升级…

c语言编写劫持dll,c语言-----劫持自己02

在上一节 c语言-----劫持原理01 已经叙述了劫持原理&#xff0c;下边正式进入劫持实战1. 需要实现的功能在c语言中system("notepad") 可以打开一个记事本system("mspaint") 可以打开画图工具所以这次我们需要把 可以打开一个记事本 这个功能更改为 在控制…

Java中Runtime类

一、概述 Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例&#xff0c;使应用程序能够与其运行的环境相连接。 一般不能实例化一个Runtime对象&#xff0c;应用程序也不能创建自己的 Runtime 类实例&#xff0c;但可以通过 getRuntime 方法获取当前R…

在Java中调用Python

写在前面 在微服务架构大行其道的今天&#xff0c;对于将程序进行嵌套调用的做法其实并不可取&#xff0c;甚至显得有些愚蠢。当然&#xff0c;之所以要面对这个问题&#xff0c;或许是因为一些历史原因&#xff0c;或者仅仅是为了简单。恰好我在项目中就遇到了这个问题&#…

android 导航动画,安利一个Android导航库

SlidingRootNav这是一个像DrawerLayout一样的抽屉式的导航库&#xff0c;这个库实现的抽屉在content view的下层&#xff0c;滑动之后&#xff0c;才能看到相应的导航页使用Gradle添加依赖compile com.yarolegovich:sliding-root-nav:1.0.2使用说明创建一个 content_view.xml或…

android 界面组件,安卓开发学习周第三篇——Android中的UI组件

原标题&#xff1a;安卓开发学习周第三篇——Android中的UI组件在Android APP中&#xff0c;所有的用户界面元素都是由View和ViewGroup的对象构成的。View是绘制在屏幕上的用户能与之交互的一个对象。而ViewGroup则是一个用于存放其他View(和ViewGroup)对象的布局容器&#xff…

BigDecimal.ZERO替代new BigDecimal(0)

这里只是想分享下&#xff0c;平时如果我们想要定义一些BigDecimal类型的变量&#xff0c;可以先看看BigDecimal有没有已经先做了定义&#xff0c;如new BigDecimal(0)就可以用BigDecimal.ZERO来代替&#xff0c;如下&#xff1a; BigDecimal bigDecimal BigDecimal.ZERO;描述…

用js拼html写下拉框,js实现下拉框效果(select)

效果图&#xff1a;代码如下&#xff1a;*{padding: 0;margin:0;}ul,li{list-style: none}.left{float: left;}.right{float: right;}.select_contain{font-size: 14px;color: #333;line-height: 38px;margin: 30px 0;}.select_item{margin-right: 50px;position: relative;}.s…

Gson Builder — 基础 命名策略

文章目录Gson Builder — 基础& 命名策略GsonBuilder 基础命名策略字段命名策略 - IDENTITY字段命名策略 - LOWER_CASE_WITH_UNDERSCORES字段命名策略 - LOWER_CASE_WITH_DASHES字段命名策略 - UPPER_CAMEL_CASE字段命名策略 - UPPER_CAMEL_CASE_WITH_SPACESSerializedName…

keil html转换工具,网页转换工具FCARM和makefsfile的使用简介

网页转换工具FCARM和makefsfile的使用简介[复制链接]首先在这里要提一下Keil的网页转换工具FCARM.exe的使用&#xff0c;花费了我好几个小时。TI也有一个类似的程序&#xff0c;是Makefsfile&#xff0c;并且源码公开的。1.gif (31.45 KB, 下载次数: 0)2010-11-8 16:44 上传2.j…

Google Gson用法详解

文章目录一、简介二、依赖三、基本用法1、创建Gson实例1.1、new Gson()1.2、GsonBuilder.build()2、Java对象–>JSON3、JSON–>Java对象4、漂亮地输出5、JSON array --> Java array/list5.1 、 JSON array -->Java对象5.2 、JSON array–>List5.3 、JSON array–…

Socket通信原理

Socket通信原理 一、Socket的定义 1、Socket是一个网络通信的套接字&#xff08;接口&#xff09; 二、Socket的实现流程 1、Socket在客户端和服务端发生了什么&#xff1f; 服务器&#xff1a; a.socket()创建socket对象 b.bind()为socket对象绑定协议&#xff0c;赋予名…

CRC校验原理及步骤

1、CRC是用来干嘛的&#xff1f; 检测数据传输过程中是否出现错误&#xff08;某些位&#xff0c;或某几位&#xff0c;或者某块区域位错误&#xff09;。 2、CRC是否能校正数据传输中的错误&#xff1f; CRC只能检错&#xff0c;不能纠错。如果发现错误&#xff0c;可根据双…

在组策略中用户策略仅对特定计算机生效,将组策略应用到满足条件的计算机---配置组策略筛选...

配置组策略筛选Microsoft?Windows?Management Instrumentation (WMI) 大概是我们已知的 Microsoft 保存最好的秘密。尽管如此&#xff0c;但毫无疑问&#xff0c;WMI 是 Microsoft 主要的针对 Windows 的管理支持技术。在Windows Server 2008的组策略高级管理中&#xff0c;对…

Idea 类和包的路径后面出现100%methods;84% lines coveredIdea coverage覆盖率测试工具的使用

Idea 类和包的路径后面出现100%methods;84% lines covered 其他先不说&#xff0c;先看一下出现的问题&#xff1a; 类和包的路径后面多了100%methods;84% lines covered&#xff0c;以前类路径后面是什么都没的&#xff1b; 长话短说&#xff1b; 产生原因&#xff1a; 因…

SpringBoot:整合监听器/过滤器和拦截器

整合监听器/过滤器和拦截器 在实际开发过程中&#xff0c;经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏/高词汇、访问权限控制(URL级别)等业务需求。实现以上的功能&#xff0c;都会或多或少的用到过滤器、监听器、拦截器。 一.SpringBoot整合过…

全国计算机英语四六级准考证打印准考证号,2017全国大学生英语四六级准考证打印...

2017年上半年度CET考试时间为6月17日&#xff0c;同学们打印准考证了吗?为方便大家打印四六级准考证&#xff0c;yjbys小编为大家分享英语四级考试准考证打印官方主页入口如下&#xff1a;2017年上半年度CET考试时间及报名方式一、考试科目及时间1.笔试考试时间日期(6月17日)考…

Centos7配置Jenkins

Centos7配置Jenkins jenkins 官方下载地址&#xff1a;https://mirrors.jenkins-ci.org/redhat/ maven 官方下载地址&#xff1a;https://archive.apache.org/dist/maven/maven-3/ tomcat 官方下载地址&#xff1a;https://tomcat.apache.org/download-90.cgi 1、配置jdk …

计算机硬盘用u盘维修,U盘装机大师修复磁盘坏道详细教程

我们都知道当我们的磁盘使用的时间久了就会容易出现各种问题&#xff0c;然而硬盘的坏道是最常见的问题之一。关于磁盘出现坏道有很多原因&#xff0c;诸如硬盘本身质量问题&#xff0c;老化&#xff0c;使用不当等等。我们的硬盘内存太小也会导致应用软件对硬盘频繁访问&#…