(每日一练)题目名称:大整数替换数位

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-06-20 21:07:33

以字符串的形式给你一个长度为 M 的整数 N,请你计算出对这个数进行一次操作后模 9 的值为 1 的所有可能的不同操作方式。 在一次操作中, 我们可以选择 N 的一个数位 N[i],并把它替换成另一个不同的 0 到 9 范围之内的数 B,两种操作方式不同当且仅当它们选择的 i 或 B 不同。

周赛出现过两次,第一次 AC 了,代码混乱,都不知道怎么 AC 的,第二次则直接零分,看了看报告,嗯,当期49期的周赛,整个零分,提交的代码没有反馈。

其实 AC 很容易,规则很简单。。。

m,n = input(),input()
v = int(n) % 9
print(sum([2 if int(i) == v - 1 else 1 for i in n]))
...全文
215 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2023-07-04
  • 打赏
  • 举报
回复
using System;
class Program {
    public static void Main() {
        string m = Console.ReadLine();
        string n = Console.ReadLine();
        int mod = 0;
        int ans = 0;
        for (int i = 0 ; i < n.Length ; i ++){
            mod = (mod + int.Parse(n.Substring(i,1))) % 9;
        }
        for (int i = 0 ; i < n.Length ; i ++){
            ans += mod - 1 == int.Parse(n.Substring(i,1)) ? 2 : 1;
        }
        Console.WriteLine(ans.ToString());
    }
}
文盲老顾 2023-06-25
  • 打赏
  • 举报
回复

因为其他语言环境无法支持大整数,尤其第一个用例。。。。几万的长度,连异常都抛不出来。。。所以,只能自己循环加,然后求余了

m = readline();
n = readline();
m = 0
a = 0
Array.from(n.match(/\d/gi)).forEach(function(x){m = (m + parseInt(x)) % 9})
Array.from(n.match(/\d/gi)).forEach(function(x){a += parseInt(x) == m - 1 ? 2 : 1})
print(a)

321

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧