加入收藏 | 设为首页 | 会员中心 | 我要投稿 西双版纳站长网 (https://www.0691zz.com.cn/)- 数据计算、IT业界、服务器、教程、云日志!
当前位置: 首页 > 大数据 > 正文

大数取余数-----x的y次方取余数

发布时间:2021-01-22 08:33:22 所属栏目:大数据 来源:网络整理
导读:大数取余数--- 题目描述: 输入一个位数不超过10^6的整数a,求a%5并输出 //此题肯定不能用long,int表示要输入的这个整数,这两种类型表示的范围没有题目要求的那么大;可用string #includeiostream#includestringusing namespace std;int main(){string str

大数取余数---

题目描述:


输入一个位数不超过10^6的整数a,求a%5并输出


//此题肯定不能用long,int表示要输入的这个整数,这两种类型表示的范围没有题目要求的那么大;可用string

#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
cin>>str;
int i;
int rem=0;
for(i=0;i<str.length();i++){
rem=rem*10+str[i]-'0';
rem=rem%5;//这里对其他数取余的话,5可以换成其他的数
}
cout<<rem<<endl;
}

x的y次方取余数

Google Round B

https://code.google.com/codejam/contest/5254487/dashboard#s=p1

只会做small practice。。。

涉及到x的y次方,对mod取余数,如下。

/***
	 * 
	 * @param x
	 * @param y
	 * @param mod
	 * @return
	 */
	public static long power(long x,long y,long mod) {
		long t = 1;
		while (y > 0) {
			if (y % 2 == 1) {
				y -= 1;
				t = t*x%mod;
			} else {
				y /= 2;
				x = x*x%mod;
			}
		}
		return t%mod;
	}

对于small practice的解法

import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;


public class RoundBProblemB {

	public static void main(String[] args) throws FileNotFoundException {
		PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream("outB-small.txt")));
		System.setOut(out);
		System.setErr(out);
		
		Scanner scanner = new Scanner(new FileInputStream("B-small-practice.in"));
		int T = scanner.nextInt();
		for (int i = 1; i <= T; i++) {
			int A = scanner.nextInt();
			int B = scanner.nextInt();
			int N = scanner.nextInt();
			int K = scanner.nextInt();
			System.out.println("Case #" + i +": " + Solve(A,B,N,K));
		}
		
		out.flush();
		out.close();
	}
	public static int Solve(long A,long B,long N,long K) {
		int ans = 0;
		int i = 1,j = 1;
		for (i = 1; i <= N; i++) {
			long sumA = power(i,A,K);
			sumA = sumA%K;
			for (j = 1; j <= N; j++) {
				if (i == j) {
					continue;
				} else {
					long sumB = power(j,K);
					sumB = sumB%K;
					if ((sumA + sumB)%K == 0) {
						ans++;
					}
				}
			}
		}
		return ans;
	}
	/***
	 * 
	 * @param x
	 * @param y
	 * @param mod
	 * @return
	 */
	public static long power(long x,long mod) {
		long t = 1;
		while (y > 0) {
			if (y % 2 == 1) {
				y -= 1;
				t = t*x%mod;
			} else {
				y /= 2;
				x = x*x%mod;
			}
		}
		return t%mod;
	}

}

(编辑:西双版纳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读