codeforces,2050C,C. Uninteresting Number

news/2025/2/11 11:53:10/文章来源:https://www.cnblogs.com/l25428455/p/18709490
/*
codeforces,2050C,C. Uninteresting Number
题目描述
给一个整数n
可以对它的任意一位进行如下操作:
将该位数字平方后,若结果不超过一位,则该位替换为平方后的结果
问通过任意次操作后得到一个能否被9整除的数
*/
/*
判断一个数能否能被3整除,只需要判断其各位数字之和能否被3整除
以下等号均为mod 3下的等号
10 % 3 = 1
a*b % 3 = (a%3 * b%3) % 3 
==> 10^x % 3 = (1%3)^x % 3 = 1 
(a+b) % 3 = (a%3+b%3) % 3
==>a*10^x % 3 = a*(10^x%3) % 3= a % 3
==> 20 % 3 = 2 % 3; 500 % 3 = 5 % 3
==> 123 % 3 = (100%3+2=%3+3%3) % 3 = (1+2+3) % 3
因此若数字abcde % 3 == 0, 则a+b+c+d+e % 3 == 010%9 = 1 ...判断一个数能否被9整除,只需要判断其各位数字之和能否被9整除可以进行平方后替换的数字
0->0//各位数字之和不变,不会造成影响
1->1//各位数字之和不变,不会造成影响
2->4//导致各位数字和+2
3->9//导致各位数字和+6,相当于+2,+2,+2
所以通过平方后替换, 数字和只能增加2的倍数将各位数字求和,结果若不为9的倍数,需要加上一定的值使其成为9的倍数
要看结果能否通过若干个+2和若干个+6使其成为9的倍数
即看(a+b)%9 = (a%9+b)%9 能否 == 0
可以看a对9的余数需要加上什么(b)才能%9 == 0有0,1,2,3,4,5,6,7,8共9中可能
其中1,2,3,4,5,6,7,8需要加上对9的补数才能被9整除
它们分别需要加上对9的补数才能被9整除
1,   2,   3,   4,   5,   6,   7,   8     得到的一位数
8,   7,   6,   5,   4,   3,   2,   1     补数
4*2, 8*2, 3*2, 7*2, 2*2, 6*2, 1*2, 5*2   模9的情况下为了得到补数需要的2的个数
8,   16,  6,   14,  4,   12,  2,   10    相当于加上的数(2*n)那么,能够通过平方后替换而将最终结果补齐为9的倍数的数字有
1+8=9,  2+7=9,  3+6=9,  4+5=9,  5+4=9,  6+3=9,  7+2=9,  8+1=9
1+8=9,  2+16=18,3+6=9,  4+14=18,5+4=9,  6+12=18,7+2=9,  8+10=18得出了各位求和的结果的一位数与它们分别需要的2的个数x
1-4,2-8,3-3,4-7,5-2,6-6,7-1,8-5在对原数字的每一位的处理时统计2和3的个数,
一个2说明有一个2可以使用, 统一1的个数
一个3说明有三个2可以一起使用,统计3的个数
判断这些2或6的各种组合能否满足需要的2的个数
最后判断需要的2的个数x是否可以有已有的若干个1和若干个3组合得到
*/
#include <string>
#include <iostream>
#include <map>
#include <algorithm>
#include <numeric>
std::map<int,int> RemainTwoCount={//1-4,2-8,3-3,4-7,5-2,6-6,7-1,8-5{1,4},{2,8},{3,3},{4,7},{5,2},{6,6},{7,1},{8,5}};
bool judge(std::string num){int countOf2=std::count(num.begin(),num.end(),'2');//1int countOf3=std::count(num.begin(),num.end(),'3');//3int sum = std::accumulate(num.begin(),num.end(),0)-'0'*num.size();int remain = sum%9;// int remain = std::stoi(num)%9;if(remain==0){return true;}else{//=========================================1// 77ms 0KB// int neededCount = RemainTwoCount[remain];// while(neededCount>=3 && countOf3>0){//     countOf3--;neededCount-=3;// }// while(neededCount>=1 && countOf2>0){//     if(neededCount>0 && countOf2>0){//         countOf2--;neededCount--;//     }// }// return neededCount == 0;//=========================================2// 62ms 0KB// int neededCount = RemainTwoCount[remain];// if(neededCount<=countOf2){//     return true;// }// int remainderOf3 = (neededCount-countOf2)%3;// int needed3 = (neededCount-countOf2)/3;// if(countOf3>=needed3 && remainderOf3==0){//     return true;// }else if(countOf3>=(needed3+1) && (3-remainderOf3)<=countOf2){//     return true;// }// return false;}
}
int main(){int count;std::cin>>count;for(auto i=0;i<count;i++){std::string num;std::cin>>num;if(judge(num)){std::cout<<"YES"<<std::endl;}else{std::cout<<"NO"<<std::endl;}}
}

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

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

相关文章

【博主亲测可用】科学计算软件:Wolfram Mathematica 14.2.0(附软件包及安装教程)

软件介绍 Wolfram Mathematica 14.2.0是一款功能全面且强大的数学计算与分析软件,它在大数据处理、人工智能集成、符号数组功能扩展、图形和可视化改进以及性能提升方面都有显著的增强。这些改进不仅使用户能够更高效地进行数据分析和科学计算,还极大地提升了用户体验。无论是…

硅基流动

使用硅基流动+Cherry ai部署 硅基流动网站:https://cloud.siliconflow.cn/i/OIItglHJ 邀请码:OIItglHJ 首次注册免费2000万Tokens Cherry ai网站:https://cherry-ai.com/download第一步,登入硅基流动网站,注册后 在左边选择api密钥,右上角选择新建api密钥新建后点击密钥…

Windows系统安装Ollama超简教程(附DeepSeek R1实战)

一、Ollama下载指引 官网地址:https://ollama.com/download选择Windows版本直接下载(推荐64位系统),安装包745MB左右,支持Win10/11系统。点击"Download for Windows"按钮即可开始下载。 二、安装过程详解双击下载的OllamaSetup.exe点击install之后,一路下一步就…

部署milvus2.5.3(standalone模式)

环境:os:Centos 7milvus:2.5.31.创建部署目录mkdir -p /home/middle/milvus2.准备docker-compose.yml配置文件内如如下: 我这里使用的是自己的镜像,需要根据自己环境情况进行修改[root@host135 milvus]# more docker-compose.yml version: 3.5services:etcd:container_name: m…

[书]清华大学DeepSeek:从入门到精通

通过网盘分享的文件:清华大学DeepSeek:从入门到精通.pdf等3个文件链接: https://pan.baidu.com/s/1y0-b3seTz7gMTTuPxYS7Vg?pwd=xd25 提取码: xd25一共三本资料

六. UML

UML 一. 事物 1.结构事物 结构事物是UML模型中的名词。它们通常是模型的静态部分,描述概念或物理元素。结构事物包括类(Class)、接口(Interface)、协作(Collaboration)、用例(Use Case)、主动类(Active Class)、构件(Component)、制品( Artifact)和结点(Node)。 各种结构事物的…

探索 QuestPDF:全平台支持、多功能、专业级的 .NET PDF 库

QuestPDF 是一个用于生成 PDF 文件的 .NET 库,它提供了一个简洁的 API 和灵活的布局选项,使得在 .NET 应用程序中创建 PDF 文件变得更加简单。 支持多平台,支持的功能有合并文档 附加文件 提取页面 加密/解密 扩展元数据 限制访问 针对 Web 进行优化 叠加层 / 底层安装 第一…

Java 中堆内存和栈内存上的数据分布和特点

说到 Java 中内存我们一般笼统地划分为堆内存(Heap)和栈内存(Stack),那么哪些数据被放置在堆内存?哪些数据被放置在栈内存?这些数据的分布有什么特点吗?博客:https://www.emanjusaka.com 博客园:https://www.cnblogs.com/emanjusaka 公众号:emanjusaka的编程栈by em…

AspNetCore 实战:三种流式响应机制详解

在现代Web应用中,实时数据传输和高效的数据流处理变得越来越重要。AspNetCore 提供了多种流式响应机制,以满足不同场景下的需求。 在使用ChatGpt,deepseek的适合有没有想过ai的逐字显示回答是怎么实现的,下面将介绍三种主要的流式响应来实现此功能。 Server-Sent Events (S…

java中反射-字节码和类加载器

多态的一个表现 子类类型赋值给父类 Father f1 = New Son() 调用子类方法报错。 调用父类方法OK。这个就是多态 一个对象能用什么方法,并不是取决于 它有什么方法。 而是取决于引用变量的类型(也就是取决于它声明的类型,Father类型) 它能够用的方法,一定是Father中的方法。 …

本地私有化部署DeepSeek,打造自己的大模型知识库

1简介 DeepSeek R1是基于MIT协议开源的大模型,意味着个人和企业可以免费使用,包括商业使用。 众所周知,我们可以在chat.deepseek.com上可以直接免费使用DeepSeek R1的聊天服务。但如果你自己开发的应用需要使用到其api的话,仍然是需要收费的,另外,如果你有机密信息并不想…

五. 数据库

数据库 一. 三级模式 一个数据库可以有多个外模式,只能有一个内模式。 视图对应外模式、基本表对应模式、存储文件对应内模式二. 两级映像 (1) 模式/内模式映像。存在于概念级和内部级之间,实现了概念模式和内模式之间的相互转换。 (2) 外模式/模式映像。存在于外部级和概念级…