POJ 2635 The Embarrassed Cryptographer 【千进制高精度取模 / JAVA】

JAVA算法:计算在游戏中达到给定分数的方法数 JAVA算法:计算在游戏中达到给定分数的方法数 考虑一个玩家可以在一个动作中得分3、5或10分的游戏。给出总分n,找出达到给定分数的方法。 例如 给定总分:n = 20 输出结果:4 有四种方法可以达到20分。 (10, 10) (5, 5, 10) (5, 5, 5, 5) (3, 3, 3, 3, 3, 5) 给定总分:n = 13 输出结果:2 有两种方法可以达到总分13。 (3, ... 阅读详情

题目链接:http://poj.org/problem?id=2635

题目:如果数K能被L以内的素数不包括L整除,输出 BAD 和这个素数,否则 GOOD;

思路:

高精度取模能够处理大数的取模,最基本的是十进制的取模,要想不超时,可以3位为一个单位取模;如果这个大数有100位,那么3位为一个单位取模只需要 100/3次,时间上有很大优化;

这里素数要用素数筛法预先打表

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>

using namespace std;

typedef long long ll;

const int Maxn = 1e6+10;

int prime[Maxn], p[Maxn], num[50], cnt;

void init () {
	cnt = 0;
	for (int i = 2; i < Maxn; ++i) {
		if (!prime[i]) {
			p[cnt++] = i;
			for (int j = i+i; j < Maxn; j+=i) prime[j] = 1;
 		}
	}
}

int main (void)
{
	init ();
	char s[105]; int k;
	while (scanf ("%s%d", s, &k)) {
		if(!strcmp (s, "0") && !k) break;
		int len = strlen (s)-1,index, n = 0; bool falg = false;
		while (len-2 >= 0) {  // 用数组把s大数拆分成3位数为一个单位 
			index = s[len]-'0';
			index += (s[len-1]-'0')*10;
			index += (s[len-2]-'0')*100;
			num[n++] = index;
			len-=3;
		}
		if(len > -1) {  // 处理剩余的部分 
			index = 0;
			for (int i = 0; i <= len; ++i) index = (index*10+(s[i]-'0'));
			num[n++] = index;
		}
		
		for (int i = 0; i < cnt; ++i) {
			if (p[i] >= k) break;
			int tmp = 0, mod = p[i];
			for (int j = n-1; j >= 0; --j) { // 高精度取模,3位数为一个单位 
				tmp = (tmp*1000+num[j])%mod;
			}
			if (!tmp) {
				printf ("BAD %d\n", mod); falg = true;
				break;
			}
		}
		if (!falg) printf ("GOOD\n");
	}
	return 0;
}

 

Java就不用多解释了,直接算就行了;

import java.io.*;
import java.util.*;
import java.math.*;
import java.text.*;

public class Main {
	public static void main (String[] args) {
		Scanner cin = new Scanner (new BufferedInputStream (System.in));
		int prime[] = new int[1000010];
		for (int i = 2; i <= 1000000; ++i) {
			if(prime[i] == 0) {
				for (int j = i+i; j <= 1000000; j+=i) prime[j] = 1;
			}
		}
		while (cin.hasNext()) {
			BigInteger N; int K, ans = 0; 
			N = cin.nextBigInteger (); 
			K = cin.nextInt();
			if (N.equals(BigInteger.ZERO) && K == 0) break;
			for (int i = 2; i < K; ++i) {
				if(prime[i] == 0 && N.remainder(BigInteger.valueOf(i)).equals(BigInteger.ZERO)) {
					ans = i; break;
				}
			}
			if (ans != 0) {
				System.out.println("BAD " + ans);
			} else System.out.println("GOOD");
		}
	}
}

 

【CMU-自主导航与规划】Autonomous Exploration Development Environment 实战:从环境搭建到多场景测试 本文详细介绍了CMU开源自主导航开发环境(Autonomous Exploration Development Environment)的实战部署与测试。内容涵盖从Ubuntu与ROS环境搭建、仿真场景配置,到核心导航模块(地形分析、局部避障、航点跟踪)的深度解析,并演示了如何集成TARE探索与FAR规划等上层算法,最终指导连接真实SLAM与实车部署,完成多场景性能评估。 阅读详情

相关推荐

开源ISP实战(1)——基于Zynq7020的Vivado工程移植与调试

本文详细介绍了将开源ISP项目移植到正点原子Zynq7020开发板的实战过程。重点阐述了在Vivado中进行工程创建、IP核导入、Block Design框架搭建、时钟配置与管脚约束修改等关键步骤,并提供了系统联调与常见问题的排查思路,为FPGA图像处理开发者提供了完整的移植与调试指南。

weixin_29191081的博客 200

JAVA进制及进制之间的转换

进制一、进制 二进制: 0、1 满二进一 以0b开头作为标识 在jdk1.7之前程序中无法直接书写一个二进制数字 八进制: 0~7,满8进1 要求以0做开头为标识 十进制 十六进制: 0~9、A~F 满16进1 要求以0x开头作为标识 二、进制之间的转换 十进制转换成二进制:不断地除2取余,然后将余数倒排。 二进制转十进制:从低为起,按位次乘以2的位数次幂,然后求和。 二进制转八进制:从低位

chou_out_man的博客 429

Java开发者的福音:Aspose 25.10全系列(Cells/Words/PDF/Slides)最新版破解与集成保姆级教程

本文为Java开发者提供了Aspose 25.10全系列组件(Cells/Words/PDF/Slides)的最新版破解与集成保姆级教程。通过详细的Maven依赖配置、字节码修改技术绕过限制,以及Spring Boot项目中的实战集成指南,帮助开发者高效实现Office文档处理功能,提升开发效率。

weixin_30919429的博客 346

Aizu - ALDS1_5_D The Number of Inversions 【归并思路求逆序数】

题目链接:https://vjudge.net/problem/Aizu-ALDS1_5_D 思路:(挑战程序设计(算法与数据结构)) 需要特别注意的有两点:1 在Left和Right数组中的末尾要加一个INF,保证其中一个数组为空时,另一个数组能继续把数填进A数组中;2 二分中 L和R的取值; #include &lt;iostream&gt; #include &lt;cstdio&g...

Y390d的博客 194

86 arduino 电机yl_(八)arduino入门:直流电机控制

一、本节介绍在本实验中,您将学习如何使用驱动芯片L293D和SunFounder Uno板控制小型直流(DC)电机的方向和速度。为了使初学者更容易,我们将让直流电机左右旋转,自动加速和减速。二、材料准备1 *小型直流电机1 * L293D1 * Arduino Uno板1 *面包板1 * USB数据线杜邦线三、原理讲解L293D这是一个非常实用的芯片,可以独立控制两台直流电机。在这个实验中,只有一...

weixin_29163857的博客 3568

Cadence Allegro 17.2 PCB设计避坑指南:从焊盘制作到封装绘制的完整流程

本文详细解析了Cadence Allegro 17.2在PCB设计中的关键操作技巧,从焊盘制作到封装绘制的完整流程。通过0402电阻和2.54mm排针的实例,揭示新手常见错误及解决方案,包括焊盘参数设置、层类型区分和坐标输入规范,帮助工程师避免设计返工和生产事故。

weixin_28683391的博客 409

java大数取模

题目链接:http://lightoj.com/volume_showproblem.php?problem=1214 用java写大数果然是方便多了! 1 import java.math.BigInteger; 2 import java.util.*; 3 import java.io.*; 4 5 public class Main{ 6 pu...

weixin_33676492的博客 492

电子产品的老化测试有哪些类型?

因此,越来越多的人在寻找“已知合格的测试连接器”,即经过测试具有可靠性和有效性的测试连接器,可以在老化测试中制定优化方法。例如对于芯片来说,不同的封装有不同的老化测试座,QFP老化测试座,QFN老化测试座等。老化测试时,专用老化电路板上的元件将承受等于或高于其额定工作条件的压力,以消除任何在额定寿命之前过早失效的元件。静态老化:在此类系统中,将测试设备安装到老化板上的插座中,然后放入老化箱中,其中每隔12至24小时施加电源和高温。动态老化:在动态老化系统中,设备以老化速度设定的最大速率进行测试。

软件技术的专栏 1839

快速幂 快速幂求模

求幂嘛,直接循环就好了啊~那么问题来了 求2的1234567899874651次幂对100007取余用循环每秒 只能跑10e8的数据,铁定超时这时候,快速幂就派上用场了先说一说快速幂原理:        比如说求7的13次方,现在令a = 7,b = 13,ans = 7^13        那么是不是有ans = 7 ^ (1*2^0  + 0*2^1 + 1*2^2 + 1*2^3)     ...

bestsort 660

AI Agent Harness与SCADA系统集成

简单来说,AI Agent Harness是Industrial AI Agent的“中央调度室+装备库+知识库+安全网”把不同技术栈、不同部署环境(云/边/端)、不同功能(感知、推理、决策、执行、验证)的“零散Agent”组装成具备特定工业场景能力的Agent Team(如聚合反应根因诊断Agent Team);管理Agent Team的生命周期(创建、初始化、调度、监控、销毁);提供统一的工业多工具调用接口(对接SCADA、MES、PLC、DCS、巡检机器人、数字孪生平台等);内置。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 355

医疗影像分析实战:肺炎X光片分类与分割

医疗影像分析实战:肺炎X光片分类与分割 ,人工智能,计算机视觉,大模型,AI,在医疗领域,医疗影像分析技术凭借其高效、精准的特点,成为疾病诊断与治疗的重要辅助手段。肺炎作为一种常见的呼吸道疾病,严重威胁人类健康,通过 X 光片对肺炎进行诊断是临床常用方法。利用计算机技术实现肺炎 X 光片的自动分类与分割,不仅能减轻医生的工作负担,还能提高诊断的准确性和效率。本文将深入讲解肺炎 X 光片分类与分割的实战过程,结合大量代码示例和关键概念解析,帮助读者掌握相关技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

The Number of Inversions Aizu - ALDS1_5_D (逆序数)-19.4.2-晚安~~

For a given sequenceA={a0,a1,...an−1}A={a0,a1,...an−1}, the number of pairs(i,j)(i,j)whereai>ajai>ajandi<ji<j, is called the number of inversions. The number of inversions is equal t...

chen_zan_yu_的博客 398

【头歌】链栈的基本操作及应用

另外,在算法的开始和结束时,栈都应该是空的,所以匹配到最后还要判断栈是否为空,若空,则说明匹配成功,返回1。其中表达式只包含三种括号,花括号{}、中括号[]、圆括号(),即它仅由 (、)、[、]、{、}六个字符组成。预期输出: 栈中元素依次为:12 47 5 8 6 92 45 63 75 38 4 29 弹出的栈顶元素 e=29 栈空否:0(1:空 0:否) 栈顶元素 e=4 栈的长度为11 清空栈后,栈空否:1(1:空 0:否)// 若栈不空,则用e返回S的栈顶元素,并返回OK;

qq_39977056的博客 4383

Java算法之进制转换的奥义

在计算如此方便的今天,又有多少人知道在一个计算器后面有多少路要走吗?你的手指轻轻一点,后台就有成千上百条代码在帮你工作,今天,就来体验一下计算器中的进制转换功能。 对于进制转换,大家并不陌生,在机器或者程序中常用的进制也就是二进制,八进制,十进制,十六进制...。而对于我们,其实接触的最多其实是十进制,二进制一般用于机器中表示,在数电,数逻,计算机组成,信息传输中等等使用频繁。关于其他进制的使用...

Charles 592

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Aizu - ALDS1_1_D Maximum Profit

题目链接                      https://vjudge.net/problem/Aizu-ALDS1_1_D 题目大意                     给出一列数, 输出最大值 题目的坑                     看似很简单, 直接两层for循环就可以搞定了, 但这会超时。(因为我就是这么做的..0.0) 典型的错误示例... #in...

looeyWei的博客 460

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java大精度模运算_Java 大数运算

1. 大数运算在Java中有两个类BigInteger和BigDecimal分别表示不可变的任意精度的整数和不可变的有符号的任意精度的十进制数(浮点数)。主要用于高精度计算中。这两个类使得java中的大数,高精度运算变得很简单,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。这两个类都在java.math.*包中,因此每次必须在开头处引用该包。为什么Java会...

weixin_39743414的博客 177

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

POJ 2635 The Embarrassed Cryptographer(JAVA)

题目链接 本来想用java 偷懒的。。。结果。。。浪费了3个小时,血的教训啊BigInteger不能用== 来判断。。。用compareTo 或者equals来判断是否相同,我在本地对拍的好久,没拍出错来,然后最后实在是没办法了,从网上找JAVA代码。。。在晒代码里,找到一份,然后一行一行的比对。。。终于,过了。。 1 import java.io.*; 2 import java....

weixin_30786617的博客 95

转化高精的取模

给定a,n,m,请你计算a^n mod m的值。 a,m <= 10^9,n <= 10^1000 方法:修改快速幂算法。 输入的数据以十进制给出,为了避免高精度的进制转换,我们可以将快速幂算法迁移到十进制。 k=1093425 ak=(a1)5*(a10)2*(a100)4*(a1000)^3… 所以我们只需要算出a1,a10,a^100… 类似地,我们可以用递推来算以上的序列 一个...

lonely_pinna的博客 403

模板 - Java 高精度计算

Java 高精度计算模板 在用C或者C++处理大数时感觉非常麻烦,但是在JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。 这两个类都在java.math.*包中,因此每次必须在开头处引用该包。 Ⅰ基本函数: 1.valueOf(parament); 将参数转换...

梦之城 695

poj 2635 The Embarrassed Cryptographer ??/Java??(???)

题意: 数K( 4 <= K <= 10^100 )是两个素数的积,L( 2 <= L <= 10^6)是两个素数中最小素数的下限,如果两个素数都不小于L,输出GOOD,否则输出其中最小的素数。 分析: 简单题,枚举L以内的素数,判断是否是K的因子即可。K很大,可以同余取模。不过还是用Java水之更简单。 import java.io....

117

poj 2635 The Embarrassed Cryptographer

The Embarrassed Cryptographer Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14077   Accepted: 3846 Description The young and very promising cryptographer

大众博客 311

Java高精度计算

代码如下:import java.util.Scanner;import java.math.BigDecimal;public class Main{ public static void main(String[] args) { Scanner cin = new Scanner(System.in); BigDecimal a = cin.nextBigDecimal(); BigD...

咸鱼一号的博客 5965

ALDS1_5_D The Number of Inversions(分而治之-归并排序)

The Number of Inversions   For a given sequence A={a0,a1,...an−1}A={a0,a1,...an−1}, the number of pairs (i,j)(i,j) where ai&gt;ajai&gt;aj and i&lt;ji&lt;j, is called the number of inversions. The nu...

Dog_dream的博客 440

Java中的二进制运算

Java中的二进制运算 比特bit,信息量的最小单位,符号b,二级制中的一位数 字节byte,表示信息的最小单位,符号B。计算机中的所有数据以字节为单位。 1byte = 8bit 1.按位与 & 参与运算的两个数据,按二进制位进行与运算。相同位上两个都为1,结果才为1。1&1=1、1&0=0、0&1=0、0&0=0。 14&3=2...

haozz的博客 1401

java怎么转换算法形式_Java千问:各种数制及数制间转换算法详解

我们在生活中用到数字,都是以十进制的方式计数的。稍有计算机常识的人都知道,计算机中是以二进制的方式计数的,另外在计算机中表示颜色经常会用到十六进制的数字,此外在其他一些领域还会用到八进制的数字。那么二进制、八进制、十进制、十六进制的数字,究竟是怎样计数的?它们之间是怎样相互换算的?本文就来详细说说这两个问题。一、多种进制的计数方法首先来说我们最熟悉的十进制。十进制计数法有10个原始的数字,分别是0...

weixin_39976951的博客 247

JAVA任意整数进制之间的互转_java实现:整数进制相互转换

展开全部java实现:整数进制相互转换的方法:十进制转62616964757a686964616fe78988e69d8331333363376461为二进制、八进制、十六进制, 用 Integer.toXXXString()方法(1)十进制转为二进制: Integer.toBinaryString(int i);public static String toBinaryString(inti...

weixin_42513616的博客 589
上一篇: Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C 【暴力枚举+dp】
下一篇: UVALive 7045 - Last Defence 【辗转相除】
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值