笔试题:小红的循环小数 数论 欧拉 快速幂 小费马定理

小红的循环小数

众所周知,所有的无限循环小数都可以写成分数的形式
小红想让你判断循环节长度为k的无限循环小数的分母是否可能是p。你能帮帮她吗?
共有q次询问。

输入描述
第一行输入一个正整数 q q q,代表询问次数。
接下来的 q q q行,每行输入两个正整数k,p,代表一次询问。
1 ≤ q ≤ 1 0 5 1\leq q \leq 10^5 1q105
1 ≤ k , p ≤ 1 0 9 1\leq k,p \leq 10^9 1k,p109
输出描述
输出 q q q行,如果存在一个分子 q q q,满足 q / p q/p q/p为循环节长度为k的无限循环小数,则输出"Yes"。否则输出"No"。
输入示例1

5
1 6
2 4
3 37
100000 3
2 37

输出示例1

Yes
No
Yes
Yes
No

说明
第一组询问,1/6=0.166666……,循环节长度为 1。
第二组询问,显然分母为 4 的小数均为有限小数。
第三组询问,8/37=0.216216216216……,循环节长度为 3。
第四组询问,1/3=0.3333……,显然长度 100000 也是它的循环节长度

💖 思路

👨‍🏫 参考地址
在这里插入图片描述
② 单位分数 1/m,若分母 m 都为 1 0 n − 1 10^n-1 10n1,则化成小数后的结果如下

1 9 = 0.1111111 … … \frac{1}{9} = 0.1111111…… 91=0.1111111……

1 99 = 0.010101 … … \frac{1}{99} = 0.010101…… 991=0.010101……

1 999 = 0.001001001 … … \frac{1}{999} = 0.001001001…… 9991=0.001001001……

这种小数叫做单位无限循环小数
0.251251251 … … = 251 × 0.001001001 … … = 251 × 1 999 0.251251251……=251×0.001001001……=251\times \frac{1}{999} 0.251251251……=251×0.001001001……=251×9991

其中右边分数的分母 999 = 1 0 3 − 1 999=10^3-1 999=1031,即循环节 = 3 = 10的指数

言归正传:题目求是否存在一个分子 x ,在分母为 p 的情况下,结果为无限循环小数 z 的循环节长度为 k,,假设现在的循环节为 a

即有 z = a × 1 1 0 k − 1 = x p z=a×\frac{1}{10^k-1}=\frac{x}{p} z=a×10k11=px

Tips:分子 x 可以为任意数

a 1 0 k − 1 = a × x a p \frac{a}{10^k-1}=\frac{a\times \frac{x}{a}}{p} 10k1a=pa×ax

Tips:即 x a \frac{x}{a} ax也可以是任意数( a ≠ 0 a\neq0 a=0)

换而言之 x a = p 1 0 k − 1 \frac{x}{a} = \frac{p}{10^k-1} ax=10k1p

上结论:分母 p 转化为 1 0 k − 1 10^k-1 10k1 的形式

  • p 的质因数中不含 2 或 5 以外的质数 :有限小数
  • p 的质因数中不含 2 或 5 两种:则必有一个 p n = 1 0 k − 1 p^n=10^k-1 pn=10k1
  • 质因数中既有2或5,又有其它质因数,可通分为 ( 1 0 n − 1 ) × 1 0 m (10^n-1)\times10^m (10n1)×10m,此时可转化为无限循环小数,再移动m位小数点(通常称为“混循环”)

💖 解题步骤

  • 分母的质因数只含 2 或 5:有限小数
  • 否则:
    • 1 0 k − 1 10^k-1 10k1 % p == 0,存在分子 x 可以通分成 a
    • else 不存在

💖 AC code

import java.util.*;class Main
{public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();for (int i = 0; i < n; i++){System.out.println(result(sc.nextInt(), sc.nextInt()) ? "Yes" : "No");}}public static boolean result(int k, int p){while (p % 2 == 0)//消去质因子 2p /= 2;while (p % 5 == 0)//消去质因子 5p /= 5;if (p == 1)return false;return (qpow(10, k, p) - 1) % p == 0;}//	快速幂private static long qpow(int x, int k, int mod){long ans = 1;while (k != 0){if ((k & 1) != 0)ans = ans * x % mod;k >>= 1;x = x * x % mod;}return ans;}
}

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

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

相关文章

Tensorflow笔记(二):常用函数2、激活函数、优化器等、神经网络模型实现(商品销量预测)

import tensorflow as tf import numpy as np from tqdm import tqdm# ----------------------------- tensor常用函数2 ----------------------------------- a tf.constant([1, 2, 3, 1, 2]) b tf.constant([0, 1, 3, 4, 5]) c tf.where(tf.greater(a, b), a, b) # 若a&g…

计算机毕业设计-springboot+vue前后端分离电竞社交平台管理系统部分成果分享

4.5系统结构设计 本系统使用的角色主要有系统管理员、顾客、接单员&#xff0c;本系统为后台管理系统&#xff0c;游客用户可以经过账号注册&#xff0c;管理员审核通过后&#xff0c;用账号密码登录系统&#xff0c;查看后台首页&#xff0c;模块管理&#xff08;顾客信息&am…

mysql重构

力扣题目链接 列转行 SELECT product_id, store1 store, store1 price FROM products WHERE store1 IS NOT NULL UNION SELECT product_id, store2 store, store2 price FROM products WHERE store2 IS NOT NULL UNION SELECT product_id, store3 store, store3 price FROM p…

全栈的自我修养 ———— js中的复制api

通常用于可以禁止用户复制或者在复制的内容后面添加版权信息等 一、代码二、展示1、访问粘贴板的内容2、替换复制内容3、在复制内容的后面添加版权信息4、监听粘贴事件 一、代码 <body><div class"demo">不可以被复制</div><div class"de…

如何从任何文档生成指令数据集以进行LLM微调

使用轻量级库经济地生成高质量的合成数据集 大型语言模型 &#xff08;LLMs&#xff09; 是功能强大的通用工具&#xff0c;但它们通常缺乏特定于领域的知识&#xff0c;这些知识通常存储在企业存储库中。 使用您自己的数据微调自定义LLM可以弥合这一差距&#xff0c;而数据准…

【Shiro反序列化漏洞】Shiro-550反序列化漏洞复现

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

了解下索引的几棵树?

二叉树 二叉搜索树最好的情况性能是O(logn)&#xff0c;最坏情况是O(n) 红黑树 它的时间复杂度是O(logn)&#xff0c;但是在数据量特别大的时候&#xff0c;树会特别高&#xff0c;就会遍历很多层级&#xff0c;对性能影响较大 BTree B树是一种多叉路衡查找树&#xff0c;相对于…

解决NVM安装Node失败:淘宝NPM镜像HTTPS证书到期及源切换指南

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

如果利用AOP/Aspect来修改方法的入参

问题描述&#xff1a; 最近项目代码过三方测试&#xff08;国企项目&#xff09;&#xff0c;在一系列代码扫描审计检查下&#xff0c;代码发现一部分修改&#xff0c;例如请求参数发生了编码/加密&#xff0c;导致后台需要对请求的参数进行解码/解密&#xff0c;后端那么接口&…

访问者模式(Visitor Pattern)

访问者模式 说明 访问者模式&#xff08;Visitor Pattern&#xff09;属于行为型模式&#xff0c;表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 该模式是将数据结构与数据操作分离的设计模式&#xff0c;是…

Flutter 多语言、主题切换之GetX库

多语言、主题切换之GetX库 前言正文一、配置项目二、模拟UI三、语言配置① 常量键② 语言配置文件③ 配置 四、持久化五、切换语言① my_home.dart② home.dart③ mine_controller.dart④ language_setting_controller.dart⑤ language_setting.dart⑥ mine.dart 六、切换主题①…

基于SpringBoot的“家政服务管理平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“家政服务管理平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 用户注册界面图 服务信息界面…

WorldGPT、Pix2Pix-OnTheFly、StyleDyRF、ManiGaussian、Face SR

本文首发于公众号&#xff1a;机器感知 WorldGPT、Pix2Pix-OnTheFly、StyleDyRF、ManiGaussian、Face SR HandGCAT: Occlusion-Robust 3D Hand Mesh Reconstruction from Monocular Images We propose a robust and accurate method for reconstructing 3D hand mesh from m…

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

发生的错误信息&#xff1a; File "C:\Users\malongqiang\.conda\envs\ObjectDetection\lib\ssl.py", line 1309, in do_handshakeself._sslobj.do_handshake() ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 分析原因&#xff1a; …

接口的回调

接口是引用型变量 接口回调技术&#xff1a;把实现该接口的类的实例引用赋给接口变 量&#xff08;存放对象的引用&#xff09;→接口变量可调用被类重写的接口方法。 ★注意★&#xff1a;接口com无法调用类中非接口方法

SQL语句在MySQL中的执行过程

有一条SQL语句&#xff0c;给到MySQL,是怎么被执行的 基本架构 连接器&#xff1a;进行身份认证&#xff0c;确定操作权限 查询缓存&#xff1a; 执行查询语句时&#xff0c;先查询缓存&#xff08;不太实用&#xff0c;MySQL 8.0 版本后删了&#xff09; 分析器&#xff1a…

格子表单GRID-FORM | 必填项检验 BUG 修复实录

格子表单/GRID-FORM已在Github 开源&#xff0c;如能帮到您麻烦给个星&#x1f91d; GRID-FORM 系列文章 基于 VUE3 可视化低代码表单设计器嵌套表单与自定义脚本交互文档网站搭建&#xff08;VitePress&#xff09;与部署&#xff08;Github Pages&#xff09;必填项检验 BUG…

搭建谷歌Gemini

前言 Gemini是Google AI于2023年发布的大型语言模型&#xff0c;拥有强大的文本生成、理解和转换能力。它基于Transformer模型架构&#xff0c;并使用了大量文本和代码数据进行训练。Gemini可以执行多种任务&#xff0c;包括&#xff1a; 生成文本&#xff1a;可以生成各种类…

一张图让你学会Python

有编程基础的人一看就可以了解 Python 的用法了。真正的 30 分钟上手。 国外一高手画的&#xff0c;现把它翻译成中文&#xff0c;入门超简单 python入门神图!(看不清可以“另存为”查看)

C++类和对象一

#include <iostream> using namespace std;//设计一个学生类 class CStudent {public: //公有成员void InputData(){cout << "请输入学号";cin >> sno;cout << "请输入姓名";cin >> sname;cout << "请输入分…