杭电oj —— 2035

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
package com.demo2;

import java.util.Scanner;

/*
 * 求A^B的最后三位数表示的整数。
  说明:A^B的含义是“A的B次方”
*/
public class HDU_oj2035 {
	public static void main(String[] args) {
		Scanner sn = new Scanner(System.in);
		while (sn.hasNext()) {
			int A = sn.nextInt() % 1000; // 先取模,使得数据变小
			int B = sn.nextInt();
			if (A == 0 && B == 0)
				break;
			int ans = 1;
			while (B != 0) {
				ans = ans * A; //次方
				ans = ans % 1000;//一直取模相乘 与相乘结果做后取模,一致
				B--;
			}
			System.out.println(ans);
		}
		sn.close();
	}
}

顺便学了一些大数的知识点:

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.PriorityQueue;
import java.util.Queue;
public class Practice {
	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer();
		sb.append(5);
		sb.append("hello");
		System.out.println(sb);
		
		// 强大的反转 反转一切容器
		sb.reverse();
		System.out.println(sb);
		
		// BigInteger类实现了任意精度的整数运算,BigDecimal类实现了任意精度的浮点运算
		// 如果基本的整数和浮点数精度不能够满足需求,这两个类可以处理任意长度数字序列的数值
		BigInteger a;
		BigDecimal b;
		
		Queue<Integer> que = new PriorityQueue<Integer>();
		que.add(3);
		que.add(5);
		que.add(10);
		que.add(7);
		que.add(9);
		que.add(15);
		que.add(11);
		System.out.println(que);
		
//      每一次都会自动建立小顶堆(堆排序)
//		while(!que.isEmpty()) {
//			System.out.print(que.poll()+ ",");
//		}
		int size = que.size();  //一定要事先先把size保存,因为每执行一步size都会减小一
		for(int i = 0; i<size;i++) {
			System.out.print(que.poll() + ",");
		}
		System.out.println();
		System.out.println("*****************************************");
		
		
		// 大数操作
		/*
		 * BigInteger不是基本数据类型之一,它其实更像String,是Java里的一个类,
		 * 然而它的初始化方式却没有String那么方便可以直接赋值,
		 * 而是跟其他自定义的类一样,要调用它的构造器进行初始化。
		 * 这个类的取值范围原则上是没有上限的,取决于你的计算机的内存
		 */
		
		/*
		 * 这里面最好用的应该是BigInger(String val)这个构造器吧,
		 * 可以直接将十进制的字符串格式变成大整数,
		 * 举例: BigInteger a=new BigInteger(“2222222222222222”);
		 * 
                      既然不是基本数据类型,所以大数的加减乘除也不能使用+、-、*、/这些运算符号,
         Java也没有对这些运算符号进行重定义,取而代之的是用一些方法来代替,
                     比如add()、subtract()、mutiply()、divide()这四种方法
		 */
		BigInteger aa = new BigInteger("-1235555564446");
		BigInteger bb = new BigInteger("6461364636");
		System.out.println(aa.add(bb).toString());
		
		
		//验证取模守恒定律
		int testA = 1234521;
		int testB = 45;
		int ansA = testA * testB;
		System.out.println(ansA % 1000);
		
		int ansB = (testA%1000) * (testB%1000);
		System.out.println(ansB % 1000); //最后再取模一次
		
		//BigInteger整数
		//BigDecimal小数,精度不会丢失
		BigDecimal aa1 = new BigDecimal("0.1"); 
		BigDecimal bb1 = new BigDecimal("0.2");
		System.out.println(aa1.add(bb1).toString()); //0.3
		
		/*
		 * 这是为什么呢?这是因为我们计算机在进行浮点运算时,采用的是二进制运算,这样做非常容易导致精度丢失.
		 */
		double aa2 = 0.1;
		double bb2 = 0.2;
		System.out.println(aa2 + bb2); //0.300000000004
	}

}

 

杭电OJ100题——2033-2035(C++版) 人见人爱A+B Problem Description HDOJ上面已经有10来道A+B的题目了,相信这些题目曾经是大家的最爱,希望今天的这个A+B能给大家带来好运,也希望这个题目能唤起大家对ACM曾经的热爱。 这个题目的A和B不是简单的整数,而是两个时间,A和B 都是由3个整数组成,分别表示时分秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时 45分钟 56秒。  Inp... 阅读详情

相关推荐

杭电acm 2035 答案

我是初学者,所用的都是简单的语言,非常容易理解的,对了我用的是c语言 ,如果不懂得c语言的就别下载了

杭电oj 2035 人见人爱A^B C语言

【代码】杭电oj 2035 人见人爱A^B C语言。

2303_76711142的博客 527

杭电OJ2035

杭电OJ2035 这题数据范围太大很容易超过longlong类型的表示范围,所以在每次处理前取前三位即可 #include<cstdio> using namespace std; int main(){ int n,m; while(scanf("%d %d",&n,&m)!=EOF){ if(n==0&&m==0){ break; } long long temp =n%1000; for(int i = 0 ;i<m-1;i+

大权子的博客 303

杭电oj——2035——人见人爱A^B——【题解】

谢谢你,成为我的星辰@球球 传送门:人见人爱的A,B 思路:这个题其实如果用pow,肯定会爆long long,可以用同余方程,和快速幂取模: 同余方程AC代码: #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<c...

乐褀的博客 546

杭电OJ 2035 人见人爱A^B C++

int n, m;break;sum *= n;return 0;

Estelle1412的博客 442

杭电oj2035、2036题详解(Java版)

杭电oj2035、2036题解(Java版)

m0_51065958的博客 390

杭电oj HDOJ 2035 人见人爱A^B

杭电oj HDOJ 2035 人见人爱A^B 题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=2035 Problem Description 求A^B的最后三位数表示的整数。 说明:A^B的含义是“A的B次方” Input 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0...

qq_39880604的博客 316

杭电oj2035c语言答案,杭电oj 2035

杭电oj 2035题目:题目地址Problem Description求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”Input输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。Output对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。Sample...

weixin_36004880的博客 355

杭电oj】2026~2035

2026.首字母变大写。

qq_65578540的博客 41

杭电OJ第11页2035~2039算法题(C语言)

目录2035.人见人爱A^B2036.改革春风吹满地2037.今年暑假不AC2038.Message2039.三角形 2035.人见人爱A^B Problem Description 求A^B的最后三位数表示的整数。 说明:A^B的含义是“A的B次方” Input 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。 Output 对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。

代码星辰的博客 1316

杭电2035题(较为详细)

杭电2035题 看到这题显而易见第一想法是用math.h里面的pow函数,但是经过实践之后发现数据太大,用pow函数求不出来这题。 所以,在每运算一次之后就对它取余(%1000,这样求的是最后三位数),如果运算之后的数值<1000那么还是当前数值,如果>1000那么会取最后三位,接下来运算就用取的三位进行运算(原数值进行运算最后三位也会不断更新,取走的三位 也会不断更新,只不过考虑溢...

qaz1196399230的博客 494

杭电oj 2035

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=2035人见人爱A^B算法分析:用循环来求A的B次方,再对1000取余保证三位数。我的ac代码:#include&lt;stdio.h&gt; int main() {     int A, B;     while (~scanf("%d %d", &amp;A, &amp;B) &amp;&amp;...

lionztt的博客 409

杭电 oj2035~

#include<bits/stdc++.h> using namespace std; int quickpow(int m,int n,int k) { int ans=1; while(n>0) { if(n&1) ans=(ans*m)%k; m=(...

a179513769的博客 273

杭电oj hdu 2035 人见人爱A^B

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2035 算法特工队QQ群:979618872 (伸手党绕边,欢迎有良好基础的人加入) // // Created by Leo Lee on 2019/4/5. // //递归+这个公式A^B%1000 = (A^(B/2)%1000*A^(B/2)%1000)%1000 #include <...

tobe_numberone的博客 470

杭电oj2035 A^B

#include&lt;iostream&gt; #include&lt;string.h&gt; #include&lt;math.h&gt; using namespace std; int main(){     int a, b;     while (cin&gt;&gt;a &gt;&gt; b)     {         if (a == 0 &amp;&amp; b == 0...

KingsCC的博客 290

杭电Oj刷题(2035

人见人爱A^B 题目描述: 求A^B的最后三位数表示的整数。 说明:A^B的含义是“A的B次方” Input 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。 Output 对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。 Sample Input ...

lucy girl 508

杭电oj2035c语言答案,小白详细讲解快速幂--杭电oj2035-A^B

Problem Description求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”Input输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。Output对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。简单的说这题就是要求高次幂,有两种方法可以实...

weixin_42245701的博客 598

杭电oj2035(JAVA

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (scanner.hasNext()){ int a=scanner.nextInt()%1000;//直接取后三位,方便后续高效运算 int b=scanner.nextInt(); if (a==0&&b==.

Gluskin的博客 273
上一篇: DAO,Service,Controller,view各层之间的关系
下一篇: 杭电oj —— 2036
LiLi_code
博客等级 码龄8年 40粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值