广东城乡建设厅网站,网站建设中 敬请期待.,网站关键词怎么优化到首页,备案网站名称与实际网站名称不一致大整数截取解决方法#xff08;java代码#xff09; 描述输入描述输出描述输入示例输出示例前置知识#xff1a;代码 解题思路来自这个博客#xff1a;简单^不简单 https://blog.csdn.net/younger_china/article/details/126376374 描述
花花有一个很珍贵的数字串#xf… 大整数截取解决方法java代码 描述输入描述输出描述输入示例输出示例前置知识代码 解题思路来自这个博客简单^不简单 https://blog.csdn.net/younger_china/article/details/126376374 描述
花花有一个很珍贵的数字串但是它太长了没有办法保留下来所以她想截取其中一段保存下来但是她希望截取下来的这一段数对1000000007取模之后等于Ai她想知道有多少种截取方案。数字串S中截取一段是指S[L], S[L1], …, S[R]连起来所形成的十进制数其中L和R满足1≤L≤R≤|S|。例如S“1023456789”S(1,2)10S(2,4)23S(2,10)23456789。
输入描述
第一行一个数字串长度不超过30000。
第二行一个数T表示询问的数量。T≤100
接下来T行每行一个非负整数Ai表示询问有多少种截取方案使得其值模1000000007后等于Ai。0≤Ai1000000007
输出描述
共T行每行一个非负整数表示方案数。
输入示例
1000000008001
4
8
0
1
10输出示例
9
39
5
2前置知识
1.a bc acbcc 2. a * bc ac*bcc 3.a – bc ac–bcc
代码
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; ibd.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 i1;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;}
}