1. 程式人生 > >大數取模 (模板)——HDU 5832

大數取模 (模板)——HDU 5832

  • 分析:
    給出一個長度最大為10000000的數字,判斷它模137和模73是否都餘0。

  • 題解:
    直接套用大數取模:
    針對數字位數超過最大整數範圍限制的數進行取模操作,每次對一位取模
    根據 (ab)%mod=(a%mod)*(b%mod);把大數換為字串處理,之後對每一位數字進行取模

    大數取模模板:

while(scanf("%s", num) != EOF)//輸入大數
{
    int len = strlen(num);
    long long ans = 0;
    for(int i = 0; i < len; ++i)
    {
        ans = ans*10 + (num[i]-'0'
); ans %= MODZ; } }
  • AC 程式碼:
/*************************************************************************
    > File Name: 1001.cpp
    > Author: Akira 
    > Mail: [email protected] 
    > Created Time: 2016年08月14日 星期日 12時01分36秒
 ************************************************************************/
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cstdlib> #include <algorithm> #include <queue> #include <stack> #include <map> #include <cmath> #include <vector> #include <set> #include <list>
typedef long long LL; typedef unsigned long long ULL; typedef long double LD; #define MST(a,b) memset(a,b,sizeof(a)) #define CLR(a) MST(a,0) #define Sqr(a) ((a)*(a)) using namespace std; #define MaxN 100000 #define MaxM MaxN*10 #define INF 1000000000 #define bug cout<<88888888<<endl; char str[11234567]; int main() { int mod = 73*137; int t = 1; while(~scanf("%s", str)) { int len = strlen(str); LL a= 0; for(int i=0;i<len;i++) { a = a*10 + (str[i]-'0'); a %= mod; } if(a ==0) { printf("Case #%d: YES\n", t++); } else { printf("Case #%d: NO\n", t++); } } return 0; }

相關推薦

大數 (模板)——HDU 5832

分析: 給出一個長度最大為10000000的數字,判斷它模137和模73是否都餘0。 題解: 直接套用大數取模: 針對數字位數超過最大整數範圍限制的數進行取模操作,每次對一位取模 根據 (a

大數 模板

對於一些基本運算的大數取模: 加法       (a+b)%n=(a%n+b%n)%n 減法       (a-b)%n=(a%n-b%n+n)%n      //為什麼要加n,由於a%n可能小於b%n,所以加n保證為正整數 乘法       a*b%n=(a%n*b%

大數 HDU 5832

int mod(char str[],int num) { int remainder=0; int len = strlen(str); for(int i=0;i<

hdu 4704 Sum(隔板+費馬小定理·大數)

Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1907    Accepted Submis

hdu(1212)大數

借鑑別人的思路; 用遞推的思想,就可以總結出下面的公式; 舉例: 12345 9 餘數等於(12340%9+5%9)%9; 而12340 9 (12300%9+40%9)%9; 依次... 最後(10000%9+2000%9)%9; 而10000%9=(1%9*10000)

大數斐波那契模板

大數斐波那契取模: #include <cstdio> #include <cstring> #include <iostream> using namespace std; const int mod=19999997; typedef

HDU-大數-最多100000位

問題及程式碼:/* *Copyright (c)2014,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:mod.cpp *作 者:單昕昕 *完成日

hdu 1212_大數

#include <stdio.h> #include<string.h> #include <stdlib.h> #define N 50000 char s[N]; int main() { int i,mod,j,m;

大數)Big Number hdu1212

cep bmi asn each one sed alt ner 100% Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota

POJ 1426 Find The Multiple(大數)【DFS】||【BFS】

++ printf true pty ace bfs 還要 ems 兩種 <題目鏈接> 題目大意: 給一個小於200的正整數n,問只有0和1組成的位數小於100的最小能被n整除的數是多少。 解題分析: 用DFS或者BFS沿著位數進行搜索,每一次搜索到下一位都有兩

大數的二進位制方法

 我們先把b轉化為2進位制       b=(a[t] a[t-1] a[t-2]....a[1] a[0])   (a[i]為0或1) 那麼b = a[t]*2^t + a[t-1]*2^(t-1) + ... ... + a[1]*

2018 ACM/ICPC 焦作賽區網路賽 G 大數,費馬小定理

There are NN children in kindergarten. Miss Li bought them NN candies. To make the process more interesting, Miss Li comes up with the rul

ACM-ICPC 2018 焦作賽區網路預賽 -G Give Candies(擴充套件尤拉定理+大數)

There are NN children in kindergarten. Miss Li bought them NN candies. To make the process more interesting, Miss Li comes up with the rul

大數運算,快速冪運算

1.快速冪取模 快速冪取模就是在O(logn)內求出a^n mod b的值。演算法的原理是ab mod c=(a mod c)(b mod c)mod c  long exp_mod(long a,long n,long b) { long t; if

大數

#include<cstdio> #include<cstring> using namespace std; const int maxn=1000+5; int mod; int main(){ char in[maxn]; while(scanf("%s%d

hdu1212(大數)

一個真正強大的人,不會把太多心思花在取悅和親附別人上面。所謂圈子、資源,都只是衍生品。最重要的是提高自己的內功。只有自己修煉好了,才會有別人來親附。自己是梧桐,鳳凰才會來棲;自己是大海,百川才來匯聚,花香自有蝶飛來。你只有到了那個層次,才會有相應的圈子,而不是倒過來!

java 大數(有可執行程式碼和詳細註解)

package dashu; //這是我的包名字,這個可以按規則任意起 import java.util.*; import java.math.*; public class muban{ /

洛谷 P1226 快速冪 模板

題目描述 輸入b,p,k的值,求b^p mod k的值。其中b,p,k*k為長整型數。 輸入輸出格式 輸入格式: 三個整數b,p,k. 輸出格式: 輸出“b^p mod k=s” s為運算結果 輸入輸

UVA 11582 巨大數的斐波那契數列 (大數,冪的計算方法)

Problem F: Colossal Fibonacci Numbers! The i'th Fibonacci number f (i) is recursively defined in the following way: f (0) = 0 and f (1) = 1f (i+2) = f 

java實現大數

import java.math.*; import java.util.*; public class Main { public static void main(Stri