程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVA - 11029 - Leading and Trailing (快速冪+公式變形)

UVA - 11029 - Leading and Trailing (快速冪+公式變形)

編輯:C++入門知識

UVA - 11029 - Leading and Trailing (快速冪+公式變形)


 

 

思路:後三位可以直接快速冪取模,然後前三位可以有兩種做法,一個是利用double,一個是利用公式法,具體看代碼吧

 

注意,後三位不足三位要補0,即用%03d

 

AC代碼①:

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 
#include 
#define LL long long
#define INF 1000000000
using namespace std;

#define MOD 1000

int T; 
int n, k;

int kmod(int x, int n) {	//快速冪 
	int ret = 1;
	while(n) {
		if(n & 1) ret = (ret * x) % MOD;
		x = (x * x) % MOD;
		n >>= 1;
	}
	return ret;
}

double kkmod(double x, int n) {		//利用double來求前三位 
	double ret = 1;
	while(n) {
		if(n & 1) ret = ret * x;
		while(ret >= INF) ret /= INF;
		x = x * x;
		while(x >= INF) x /= INF;
		n >>= 1;
	}
	return ret;
}

int main() {
	scanf(%d, &T);
	while(T --) {
		scanf(%d %d, &n, &k);
		
		int ttt = n % 1000;
		ttt = kmod(ttt, k);
		
		double lll = kkmod((double)n, k);
		lll *= 1000;	//可能lll本來就小於1000,可能還不足三位 
		while(lll >= 1000) {
			lll /= 10;
		}
		/*char str[1234];
		sprintf(str, %lf, 1000 * lll);
		str[3] = '';*/  //也可以這樣輸出前三位 
		//printf(%lf
, lll);
		
		printf(%d...%03d
, (int)lll, ttt);	//記住後三位用%03d,要嚴格按照格式輸出 
	}
	return 0;
}


 

 

 

AC代碼②:

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 
#include 
#define LL long long
#define INF 0x7fffffff
using namespace std;

int T;
int n, k; 

int kmod(int x, int n) {
	int ret = 1;
	while(n) {
		if(n & 1) ret = (ret * x) % 1000;
		x = x * x % 1000;
		n >>= 1;
	}
	return ret;
}

int main() {
	scanf(%d, &T);
	while(T --) {
		scanf(%d %d, &n, &k);
		int lll, ttt;
		lll = kmod(n % 1000, k);
		ttt = (int)pow(10, 2 + fmod(k * log10(n), 1));	//利用公式變形來求前三位 
		printf(%d...%03d
, ttt, lll);
	}
	return 0; 
}


 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved