數論 ( 求取大數n k的前3位與後3位)

2021-08-21 19:35:54 字數 2310 閱讀 5671

求取大數的後k位比較簡單  即利用快速冪  取c = 10^k就可以 

模板:( 以  k =  3 為例)

long long int quick_mod( long long int a, long  long int b )

a = ( a*a)%c;

b = b/2;

}//printf("%lld\n", ans);

return ans;

}如果求取前幾位 則需要用到下列公式 :

設 10^p = n^k

兩邊取對數 即 p = k*log( 10)( n )

然後 x = ( long long int )p 儲存p的整數部分

y = p-x 儲存 p的小數部分

則 10^p = 10^( x+y) = n^k

10^y = n^k/10^x

因為x 為整數  所以10^y 就相當於你n^k小數字向前移動了  又y >= 0  所以10^y >= 1所以

( long long int )( 10 ^ y *100)  double p = k*log10( double( n ) );

long long int x = ( long long int )p;

double y = p - x;

long long int an  = ( int )(pow( 10, y )*100);即為n^k 的前三位

例題跟蹤

you are given two integers:nandk, your task is to find the most significant three digits, and least significant three digits ofnk.

input

input starts with an integert (≤ 1000), denoting the number of test cases.

each case starts with a line containing two integers:n (2 ≤ n < 231)andk (1 ≤ k ≤ 107).

output

for each case, print the case number and the three leading digits (most significant) and three trailing digits (least significant). you can assume that the input is given such thatnkcontains at least six digits.

sample input

5123456 1

123456 2

2 31

2 32

29 8751919

sample output

case 1: 123 456

case 2: 152 936

case 3: 214 648

case 4: 429 296

case 5: 665 669

坑 : 最後三位為023 時也應該輸出023

#include

#include

#include

#include

#include

using namespace std;

int quick_mod( long long int a, long  long int b )

a = ( a*a)%c;

b >>= 1;

}return ans;

}

int main()

}

希望可以對你有所幫助!!

取乙個大數的前幾位

此思想借助2.2.1來幫助理解 先看對數的性質,loga b c c loga b loga b c loga b loga c 假設給出乙個數10234432,那麼log10 10234432 log10 1.0234432 10 7 log10 1.0234432 7 log10 1.02344...

獲取當前時間的前3天

根據當前時間獲取前3的時間 根據情況而定 1.建立日曆類 calendar ca calendar.getinstance 2.設定當前時間 ca.settime new date 3.設定日期物件 並格式轉換 根據自己需求轉換 dateformat df new dateformat yyyy m...

找出陣列中出現次數大於n 2 n 3,n k的數

1.找出陣列中次數大於n 2的元素 說明 演算法空間複雜度o n 時間複雜度o 1 陣列中次數超過n 2的數最多1個,設定乙個頻率數,前乙個數和後乙個數相同,頻率 1,否則 1,只要有數頻率超過陣列長度一半,最終這個頻率肯定大於0.public static intsolve2 int array ...