日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

N^N最左边和最右边的数(数学)

發布時間:2024/9/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 N^N最左边和最右边的数(数学) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1763: N^N
時間限制: 1 Sec 內存限制: 128 MB

[提交][狀態][討論版]
題目描述
現給你一個正整數N,請問N^N的最左邊和最右邊的數字是什么?

輸入
輸入包含多組測試數據。每組輸入一個正整數N(N<=1000000)。

輸出
對于每組輸入,輸出N^N的最左邊和最右邊的數字。

樣例輸入

3 5

樣例輸出

2 7 3 5

提示
來源
/*
n^n非常大,直接算是得不得結果的。但是我們知道任意一個整數數都可以化成a*10^k
比如16 = 1.6 * 10^1,27 = 2.7 * 10 ^1
那么對于本題n^n = a * 10 ^ k
根據題意,我們要想辦法算出a大概是多少,然后強制轉換為整型,其結果就是n^n結果最左邊的數
我們可以兩邊同時取以10為底的對數:

log10(n^n) = log10(a*10^k)

左邊:
log10(n^n) = nlog10(n)
右邊:

log10(a*10^k) = log10(a) + log10(10^k) nlog10(n) = log10(a) + k 我們知道`a>0&&a<10,所以 log10(a)的結果是非常小的,所以nlog10(n) ≈ k` so:log10(a) = nlog10(n) - int(nlog10(n))a = 10^(nlog10(n) - int(nlog10(n))ans1 = int(a) //最左邊的數

對于最右邊的數,比較好算,n^n按我們手動計算過程當中可以發現,每次的結果的最后一位只和上次結果的最后一位有關,所以直接來個快速冪,不斷對10取余就行。
*/

#include <iostream> #include <math.h> using namespace std; typedef long long LL; LL quickPow(LL a,LL b) {//a %= 10;//n最大1e6,這里不取也可以LL res = 1;while(b){if(b&1) res = res * a % 10;a = a*a%10;b >>= 1;}return res; } int main() {double n;while(cin>>n){int k = n*log10(n);double x = pow(10,n*log10(n)-k);LL t = n;cout<<(int)x<<" "<<quickPow(t,t)<<endl;}return 0; }

總結

以上是生活随笔為你收集整理的N^N最左边和最右边的数(数学)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。