大整数截取解决方法(java代码)

news2024/11/10 10:40:34

大整数截取解决方法(java代码)

  • 描述
  • 输入描述
  • 输出描述
  • 输入示例
  • 输出示例
  • 前置知识:
  • 代码

解题思路来自这个博客:@简单^不简单
https://blog.csdn.net/younger_china/article/details/126376374

描述

花花有一个很珍贵的数字串,但是它太长了,没有办法保留下来,所以她想截取其中一段保存下来,但是她希望截取下来的这一段数对1000000007取模之后等于Ai,她想知道有多少种截取方案。数字串S中截取一段是指S[L], S[L+1], …, S[R]连起来所形成的十进制数,其中L和R满足1≤L≤R≤|S|。例如S=“1023456789”,S(1,2)=10,S(2,4)=23,S(2,10)=23456789。

输入描述

第一行一个数字串,长度不超过30000。

第二行一个数T,表示询问的数量。(T≤100)

接下来T行,每行一个非负整数Ai,表示询问有多少种截取方案使得其值模1000000007后等于Ai。(0≤Ai<1000000007)

输出描述

共T行,每行一个非负整数,表示方案数。

输入示例

1000000008001
4
8
0
1
10

输出示例

9
39
5
2

前置知识:

1.(a + b)%c =((a%c)+(b%c))%c
2. (a * b)%c =((a%c)*(b%c))%c
3.(a – b)%c =((a%c)–(b%c))%c

代码

import java.util.Scanner;
public class Main {
    static int tempMod = 1000000007;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String bd = in.nextLine();
        int n = in.nextInt();
        int[] nums = new int[n];
        for(int i = 0; i < n; i++) {
            nums[i] = in.nextInt();
        }
        for(int i = 0; i < n; i++) {
            System.out.println(find(bd,nums[i]));
        }
    }
    public static int find(String bd, int remainder) {
        int count = 0;
        for(int i = 0; i<=bd.length()-1;i++) {
        //第一层for循环表示从第i个值开始
            long remin = bd.charAt(i) - '0';
            //这里if语句判断表示只取一个值,做判断
            if(remin == remainder) {
                count++;
                if(i > 0){
                //这里的for循环表示当i左边还有数的时候,判断是否有0,有连续的n个0,就count自增n次,一定要连续,否则退出
                    for(int k = i-1; k >= 0;k--) {
                        if(bd.charAt(k) == '0') count++;
                        else break;
                    }
                }
            }
            if(remin != 0){
            //这里的for循环属于第二层for循环,作为判断截取数以坐标i开头,坐标j结尾的非个位数是否符合要求
            //注意,这里第二层判断的时候,开头的数坐标i不能等于0,不然没有意义,所以做了if判断
                for(int j = i+1;j <bd.length();j++) {
                    remin = ((remin * 10) % tempMod + (bd.charAt(j)-'0')) % tempMod;
                    if(remin == remainder){
                        count++;
                        if(i > 0){
                        //同样,当该数符合要求的时候,前面若还有数,判断是否有0,有连续的n个0,就count自增n次,一定要连续,否则退出
                            for(int k = i-1; k >= 0;k--) {
                                if(bd.charAt(k) == '0') count++;
                                else break;
                            }
                        }
                    }
                }
            }

        }
        return count;
    }
}

在这里插入图片描述

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

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

相关文章

P4053 [JSOI2007] 建筑抢修(贪心)(内附封面)

[JSOI2007] 建筑抢修 题目描述 小刚在玩 JSOI 提供的一个称之为“建筑抢修”的电脑游戏&#xff1a;经过了一场激烈的战斗&#xff0c;T 部落消灭了所有 Z 部落的入侵者。但是 T 部落的基地里已经有 N N N 个建筑设施受到了严重的损伤&#xff0c;如果不尽快修复的话&#x…

python项目开发案例集锦,python开发程序流程

大家好&#xff0c;给大家分享一下python项目开发案例集锦 源码&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 今天任务 1.创建Python项目为pythontest1以及test1.py文件 2.修改字号 3.输入九九乘法表程序&#xff0c;编译调试执行 4.配置…

Python selenium对应的浏览器chromedriver版本不一致

1、chrome和chromedriver版本不一致导致的&#xff0c;我们只需要升级下chromedriver的版本即可 浏览器版本查看 //打开google浏览器直接访问&#xff0c;查看浏览器版本 chrome://version/ 查看chromedriver的版本 //查看驱动版本 chromedriver chromedriver下载 可看到浏…

基于 Debian GNU/Linux 12 “书虫 “的Neptune 8.0 “Juna “来了

导读Neptune Linux 发行版背后的团队发布了 Neptune 8.0&#xff0c;作为这个基于 Debian 的 GNU/Linux 发行版的重大更新&#xff0c;它围绕最新的 KDE Plasma 桌面环境构建。 Neptune 8.0 被命名为 “Juna”&#xff0c;是在Neptune 7.5 发布 11 个月后发布的&#xff0c;也是…

2.1 密码学基础

数据参考&#xff1a;CISP官方 目录 密码学基本概念对称密码算法非对称密码算法哈希函数与数字签名公钥基础设施 一、密码学基本概念 1、密码学形成与发展 发展历程 古典密码学 (1949年之前) 主要特点&#xff1a;数据的安全基于算法的保密 近代密码学 (1949~1975年…

第4章 案例研究:JavaScript图片库

案例 html部分 <h1 id"title">图片1</h1> <ul><li><!-- onclick绑定点击事件&#xff0c;this为触发dom&#xff0c;return false阻止默认行为 --><a onclick"show_img(this); return false" title"图片1" h…

数字信号处理中的基本运算——乘法运算

一、二进制乘法原理 二进制乘法可分为&#xff1a;无符号乘法和有符号乘法 整个相乘过程可分解为一系列的移位、相加操作。 有符号数乘法可分为&#xff1a;&#xff08;1&#xff09;正数*正数&#xff1b;&#xff08;2&#xff09;正数*负数&#xff1b;&#xff08;3&…

申请软件著作权都有什么好处?

随着社会的发展&#xff0c;知识产权保护意识对于公司而言尤为重要&#xff0c;对自己的权利进行最大限度的保护&#xff0c;以防止被别有用心的人侵权。那么&#xff0c;申请软著的好处到底是什么?软著有什么用呢? 无形资产软著是一种无形的知识产权&#xff0c;是开发者智慧…

(常压)室温超导体:The First Room-Temperature Ambient-Pressure Superconductor

2023年7月23日&#xff0c;一支韩国的研究团队声称他们已经成功研制出了一种在室温和常压下的超导体&#xff0c;名为LK-99。这一发现在科学界引起了广泛的关注和讨论。 然而&#xff0c;这项研究的结果也引起了一些科学家的怀疑。有些人对数据的真实性表示了疑虑&#xff0c;认…

【UEC++学习】UE网络 - Replication、RPC

1. UE网络架构 &#xff08;1&#xff09;UE的网络架构是SC&#xff08;Server - Client&#xff09;的模式&#xff0c;这种模式的优势&#xff1a;这种模式让所有客户端都在服务器端进行安全验证&#xff0c;这样可以有效的防止客户端上的作弊问题。 &#xff08;2&#xff…

【编程范式】聊聊什么是数据类型和范式的本质

什么是编程范式 范式其实就是做事的方式&#xff0c;编程范式可以理解为如何编程&#xff0c;按照什么样的模式或者风格进行编程。 编程范式包含哪些 泛型编程函数式编程面向对象编程编程本质和逻辑编程 虽然有不同的编程范式&#xff0c;但是对于目的来说都是为了解决同一…

关于vs下多态虚表中存储的地址和实际成员函数地址不一样的原因

以如下代码为例&#xff1a; class Base1 { public: virtual void func1() { cout << "Base1::func1" << endl; } virtual void func2() { cout << "Base1::func2" << endl; } private: int b1; }; class Base2 { public: virtual…

BES 平台 SDK之LED的配置

本文章是基于BES2700 芯片&#xff0c;其他BESxxx 芯片可做参考&#xff0c;如有不当之处&#xff0c;欢迎评论区留言指出。仅供参考学习用&#xff01; BES 平台 SDK之代码架构讲解二_谢文浩的博客-CSDN博客 关于SDK 系统框架简介可参考上一篇文章。链接如上所示&#xff01…

学python需要下载什么软件,自学python需要安装什么

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;学python需要安装一些什么软件好&#xff0c;学python需要安装一些什么软件&#xff0c;今天让我们一起来看看吧&#xff01; 工欲善其事必先利其器。初学者在学Python的时候&#xff0c;往往会因为没有好用的软件工具&…

2.5 BUMP图改进

一、Bump Mapping介绍 凹凸贴图映射技术是对物体表面贴图进行变化然后进行光计算的一种技术。例如给法线分量添加噪音&#xff0c;或者在一个保护扰动值的纹理图中进行查找。这是一个提升物理真实感的有效方法&#xff0c;但却不需要额外的提升物体的几何复杂度。这种法式在提…

华为OD机试真题 Java 实现【简单的自动曝光】【2023Q1 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、备注五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明4、再输入5、输出6、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff…

【雕爷学编程】Arduino动手做(173)---SG90舵机双轴云台模块2

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

数据库事务--springboot事务处理

二、简单事务使用 模拟一 1、数据库 db.sql drop database if exists supermarket; create database supermarket; use supermarket; drop table if exists order_item; CREATE TABLE order_item (item_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 订单ID,order_no …

Linux 用户和权限

一、root 用户 root 用户(超级管理员) 无论是windows、Macos、Linux均采用多用户的管理模式进行权限管理。在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root (超级管理员)。 root用户拥有最大的系统操作权限&#xff0c;而普通用户在许多地方的权限是受限的。…

一文教你吃透Git工具

目录 Git简介 git的安装和配置 新建仓库 工作区域和文件状态 git reset回退版本 使用git diff比较差异 Git简介 git是一个免费开源的分布式版本控制系统&#xff0c;它使用一个特殊的叫做仓库的数据库来记录文件的变化&#xff0c;仓库中的每个文件都有一个完整的版本历史…