Codeforces - 1107B. Digital root

发布于 2024-09-15 08:23:40 字数 1748 浏览 8 评论 0

题目

一个数 x 的数根的定义 S(x) 是如题目中给出的样子(就是一个数不断的将各个位上的数相加得到一个新的数(直到这个数为个位数)),现在给你两个数 k、x ,要你求出第 k 个数根是 x 的非负整数。

解析

想半天没有思路,其实是一道找规律的水题。。

先将前面的结果打表,求出每个数对应的数根,即可以发现规律:

  • 是一个以 9 为周期的循环,每个周期的结果都是 1 ~ 9
  • 于是很容易得到结果 (k- 1) * 9 + x

结果代码以及打表代码:

import java.io.*;
import java.util.*;

public class Main {

    static long getSum(long p){ 
        if(p == 0)
            return 0;
        return getSum(p/10) + p%10;
    }

    static long getRoot(long p){ 
        if(p < 10)
            return p;
        return getRoot( getSum(p) );
    }

    static void test(){ 
        // Bymeter 
        for(int i = 0; i < 100; i++)
            System.out.println( i + " " + getRoot(i) );
    }

    public static void main(String[] args){
        Scanner cin = new Scanner(new BufferedInputStream(System.in));
        PrintStream out = System.out;
        //test();
        int n = cin.nextInt();
        for(int i = 0; i < n; i++){ 
            long k = cin.nextLong();
            int x = cin.nextInt();
            out.println( (k-1) * 9 + x);
        }
    }
}

题目链接

https://codeforces.com/problemset/problem/1107/B

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

被翻牌

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文