NJUST 1926 琪露诺的算术教室 (解方程 大数)

2024-03-20 13:32

本文主要是介绍NJUST 1926 琪露诺的算术教室 (解方程 大数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

琪露诺的算术教室

Time Limit: 1000ms

Memory Limit: 65536KB

Description

给出一个非负整数A,将这个数字的最低位移动到最高位(原来的最高位变为次高位,次低位变成最低位),得到非负整数B,发现B恰好是A的k倍。现给出A的最低位的值n,和倍数k,求最小的非负整数B。

Input

第一行输入一个正整数T(1 <= T <= 1000),表示有T组测试数据。对于每组测试数据:输入两个整数n,k(0<=n<=9 , 0<=k<=9)。

Output

对于每组测试数据,输出一个非负整数B,若无解,请输出-1。

Sample Input

1
2 2

Sample Output

210526315789473684

题目链接:https://icpc.njust.edu.cn/Problem/Local/1926/

题目分析:也就wa了14发吧,比赛结束前30毫秒AC,就是解方程,特判情况比较多,而且结果爆long long,方程就是k * (10 * x  + n)  = x + n * (10 ^ c),枚举c,解x,判断x是不是c位数,加几个特判,n和k都是0是答案是0,k=1是答案是n,因为只有一个数字,怎么移都是自己的一倍,n=0时答案显然是0,n小于k或者k等于0显然无解。直接java跑大数

import java.io.*;
import java.math.*;
import java.util.*;
public class Main {public static BigInteger pp(BigInteger x, int n){BigInteger res = BigInteger.ONE;for(int i = 1; i <= n; i++)res = res.multiply(x);return res;}public static int calw(BigInteger x){String s = x.toString();int len = s.length();return len;}public static void main(String[] args) {Scanner in = new Scanner(System.in);int T = in.nextInt();for(int i = 0; i < T; i++) {int n = in.nextInt();int k = in.nextInt();if(n == 0 && k == 0){System.out.println(0);continue;}if(k == 1) {System.out.println(n);continue;}if(n == 0){System.out.println(0);continue;}if(n < k){System.out.println(-1);continue;}if(k == 0){System.out.println(-1);continue;}boolean flag = false;for (int t = 0; t <= 100 && flag == false; t++) {BigInteger tmp = pp(BigInteger.valueOf(10), t);tmp = tmp.subtract(BigInteger.valueOf(k));BigInteger a = BigInteger.valueOf(n).multiply(tmp);tmp = BigInteger.valueOf(10).multiply(BigInteger.valueOf(k));BigInteger b = tmp.subtract(BigInteger.ONE);if (a.compareTo(b) >= 0 && a.mod(b).compareTo(BigInteger.ZERO) == 0) {BigInteger x = a.divide(b);int w = calw(x);if (w == t) {BigInteger ans = x.multiply(BigInteger.valueOf(10)).add(BigInteger.valueOf(n));ans = ans.multiply(BigInteger.valueOf(k));System.out.println(ans);flag = true;}}}if (flag == false)System.out.println(-1);}}
}



这篇关于NJUST 1926 琪露诺的算术教室 (解方程 大数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/829594

相关文章

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

找第K大数(ACdream 1099)

瑶瑶的第K大 Time Limit: 4000/2000MS (Java/Others)  Memory Limit: 256000/128000KB (Java/Others) Submit  Statistic  Next Problem Problem Description 一天,萌萌的妹子--瑶瑶(tsyao)很无聊,就来找你玩。可是你们都不知道玩什么。。。

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)

1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加法运算的两张图shape必须是相同的. # 图片加法imp

【HDU】2242 考研路茫茫——空调教室 双连通分量+树型DP

考研路茫茫——空调教室 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1978    Accepted Submission(s): 576 Problem Description 众所周知,HDU的考研教室是没

从VHDL代码到真实硬件:设计一个8位算术逻辑单元

在这个项目中,我们使用VHDL语言创建了一个8位算术逻辑单元(ALU),并在连接到带有输入开关和LED显示器的自定义PCB的Altera CPLD开发板上运行它。 本文引用地址:https://www.eepw.com.cn/article/202409/462593.htm 使用基于硬件的方法开发电子系统并不总是需要将各种晶体管和逻辑门物理连接到面包板或PCB上。可以使用离散逻辑构建算术逻辑单

SDUT2876_走楼梯(大数)

走楼梯 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 小虎发现走楼梯的时候一次上一个台阶比较惬意,一次上两个台阶比较高效,一次上三个台阶就很累人。 小虎是一个即注重质量又注重高效的人,于是他就在上楼梯的时候每步就只跨上一个台阶或两个台阶, 现在小虎想知道他这样上n阶的楼梯一共有多少种走法,但

整数算术运算中的错误

如果一个整数被零除,将不会产生正确的结果,而是出现一个异常( exception ).在Java中,异常是标志错误的一种方法,我们将在第7章中详细地介绍。对变量或表达式应用%运算符,如果右侧的操作数是零,也将导致一个异常。     注意,如果一个整型表达式产生的值超出了结果类型的取值范围,这个结果就会按照该数据类型的存储位数截断,结果是不正确的,而且不会得到任何提示。这样处理可以确保在程序中应

【高精度】-DLUTOJ-1176-大数乘法

题目链接:http://acm.dlut.edu.cn/problem.php?id=1176 题目描述:赤裸的大数乘法 解题思路: 突然想到自己没写过高精度乘法,就回咱们自己OJ上找出了这道题,赤裸的高精度乘法而已,没想到依然觉得不好写,准确说来是我从小到大算乘法的习惯使我产生了错觉:“ 想写大数乘法就得先写一个大数加法出来 ”。喂!我短路了半天才想明白,int 数组里可以存个两位数啊,再