首页 > 试题广场 >

九倍平方数

[编程题]九倍平方数
  • 热度指数:4621 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个不含前导零的十进制数字串 n(长度 \leqq10^5)。你可以多次执行以下操作:
\hspace{23pt}\bullet\, 选择 n 中的某一位数字 x\ (0\leqq x\leqq9)
\hspace{23pt}\bullet\,x^2<10,将该位替换为 x^2

\hspace{15pt}若通过若干次(可为 0 次)操作可以使最终数字能被 9 整除,则称数字串 n 为好数。判断每个测试用例的数字串 n 是否为好数

输入描述:
\hspace{15pt}第一行输入整数 t\left(1\leqq t\leqq 10^4\right),表示测试用例数量。
\hspace{15pt}随后 t 行,每行一个数字串 n,长度 \leqq10^5,保证所有用例数字串 n 的总长度 \leqq10^5


输出描述:
\hspace{15pt}对每个用例输出 ``\text{YES}`` 或 ``\text{NO}``(大写),表示是否存在操作序列使得最终数字能被 9 整除。
示例1

输入

9
123
322
333333333333
9997
5472778912773
1234567890
23
33
52254522632

输出

NO
YES
YES
NO
NO
YES
NO
YES
YES

说明

在第一组样例中,从整数 123 中只能得到 123143129149 ,它们都不能被 9 整除。

在第二组样例中,需要将第二个数字替换为它的平方,那么 n 就等于 342 = 38 \cdot 9

在第三组样例中,整数已经可以被 9 整除。
头像 Silencer76
发表于 2025-08-08 22:00:00
题目链接 九倍平方数 题目描述 给定一个不含前导零的十进制数字串 (长度 )。你可以多次执行以下操作: 选择 中的某一位数字 。 将该位数字替换为 。如果 是一个多位数(例如 ),它会替换掉原来的单个数字 ,从而可能改变数字串的长度。 若通过若干次(可为 0 次)操作可以使最终数字能被 9 展开全文
头像 赶due_ing
发表于 2025-08-11 20:44:14
我们知道每一位数加起来是9的倍数的可以被9整除,diffNine代表了所有位加起来还差多少能被9整除,比如diffNine算得2,问题变成了需要多少2(由2->4位和增加2),6(由3->9位和增加6)组合得到2+9n。通过遍历得到2,3的个数,设为m,n。即: 2m+6n=diff+9 展开全文
头像 CARLJOSEPHLEE
发表于 2025-07-14 16:29:41
from sys import stdin,stdout read1 = stdin.read().split() ans = [] for index in range(int(read1[0])): n = [int(i) for i in read1[index+1]] k = 展开全文
头像 BraveCoder
发表于 2025-08-27 21:25:14
要解决这个问题,我们需要判断一个数字串是否能通过特定操作(将数字替换为其平方,仅当平方小于 10 时)转化为能被 9 整除的数。核心依据是能被 9 整除的数的特性:各位数字之和能被 9 整除,结合操作对数字和的影响推导判断逻辑。一、问题分析与核心逻辑1. 操作对数字和的影响仅当数字 x ∈ {0,1 展开全文
头像 湮雨
发表于 2025-08-21 10:51:08
#include <iostream> using namespace std; bool isGoodNum(const string& s){ int sum=0; int cnt2=0; int cnt3=0; for(char c:s){ 展开全文
头像 牛客172796430号
发表于 2025-12-10 22:33:59
#include <iostream> #include <string> // 必须包含string using namespace std; int main() { int t,a2,a3,a,i,j,flag; cin>>t; 展开全文
头像 紫璨月
发表于 2025-10-14 16:06:20
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = 展开全文
头像 何成95
发表于 2025-10-25 21:55:50
def solve(num): sun = sum(num) if sun % 9 == 0: return "YES" n2 = num.count(2)#统计输入数字中,2,3的个数,方便进行变换操作 n3 = num.coun 展开全文
头像 AchanLin
发表于 2025-12-12 15:13:44
using System; using System.Collections.Generic; public class Program { public static void Main() { //有一个能被9整除的数的特性:它的各位数字之和也能被9整除 展开全文
头像 呆瓜不呆
发表于 2025-08-04 20:29:15
#include <iostream> #include <string> using namespace std; // 1.关于这里为什么对2的个数限制在8个,3的个数限制在2个。 // 1.数的增量只能由2和3来,2的增量是4-2=2,3的增量是3*3-3=6. // 展开全文