7-5 游游學姐神算子 (10分)
游游學姐已退隱江湖好多年了,江湖上沒有人知道她長什么樣,但是當年游游學姐一秒心算的傳說,仍是人們津津樂道的話題。相傳游游學姐是一位神算子,只要給她三個整數,n、m、p,她能在一秒內告訴你n除以m的小數點后面第p位是多少。不管你信不信,反正我信了。
輸入格式:
測驗資料有多組,執行到檔案結尾。每組測驗資料有三個整數,n、m、p(0 < n < 10,0 < m < 10^7, 0 < p < 10^5)。
輸出格式:
對于每組輸入,n/m的小數點后第p位。每個輸出占一行。
輸入樣例:
在這里給出一組輸入。例如:
1 2 3
2 4 1
輸出樣例:
在這里給出相應的輸出。例如:
0
5
uj5u.com熱心網友回復:
首先將float output=(float)n/m 轉為浮點數,獲取第一位小數:(output*10)%10
獲取第二位小數:(output*100-)%10
其他類似
uj5u.com熱心網友回復:
#include <stdio.h>
int main(void)
{
int n, m, p;
int i;
double output;
while (scanf("%d%d%d", &n, &m, &p) == 3) {
output = n * 1.0/ m;
for (i = 0; i < p; i++)
output *= 10;
printf("%d\n", (int)output % 10);
}
return 0;
}
供參考~
uj5u.com熱心網友回復:
總的邏輯是上面這樣,for回圈可以用math庫里面的double pow(double x, double y)求次方函式代替,要往嚴謹了說,輸入值的范圍的限制得寫一套提示,輸入格式說“測驗資料有多組,執行到檔案結尾”,不知道是寫個陣列一次接收多組輸入呢,還是讀文本檔案中的輸入資料,都有對應的一套固定寫法uj5u.com熱心網友回復:
嗯,應該是從檔案讀取,其他的都試了都不對
uj5u.com熱心網友回復:
執行到檔案結尾不是必須從檔案中讀.不要忘了標準輸入也是可以輸入EOF的.Linux下是ctrl+d,windows下是ctrl+z.
uj5u.com熱心網友回復:
總的邏輯是上面這樣,for回圈可以用math庫里面的double pow(double x, double y)求次方函式代替,要往嚴謹了說,輸入值的范圍的限制得寫一套提示,輸入格式說“測驗資料有多組,執行到檔案結尾”,不知道是寫個陣列一次接收多組輸入呢,還是讀文本檔案中的輸入資料,都有對應的一套固定寫法
執行到檔案結尾不是必須從檔案中讀.不要忘了標準輸入也是可以輸入EOF的.Linux下是ctrl+d,windows下是ctrl+z.
uj5u.com熱心網友回復:
演算法有問題吧,小數點1萬位,超出double的精度了借用LS的代碼修改一下
int main() {
int n, m, p;
int i, k=0;
while (scanf("%d%d%d", &n, &m, &p) == 3) {
n %= m; //取余,為了計算小數
for (i = 0; i < p; i++) {
n *= 10; //像減法一樣借位,借10倍
k = n / m; //借位后求出商即為小數點數
n %= m; //繼續取余求下一位小數
}
printf("%d\n", k);
}
return 0;
}uj5u.com熱心網友回復:
演算法有問題吧,小數點1萬位,超出double的精度了
借用LS的代碼修改一下
int main() {
int n, m, p;
int i, k=0;
while (scanf("%d%d%d", &n, &m, &p) == 3) {
n %= m; //取余,為了計算小數
for (i = 0; i < p; i++) {
n *= 10; //像減法一樣借位,借10倍
k = n / m; //借位后求出商即為小數點數
n %= m; //繼續取余求下一位小數
}
printf("%d\n", k);
}
return 0;
}
這個演算法真的很巧,多謝(o^^o)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132805.html
標籤:C語言
上一篇:AVX2指令讀取位置 0xFFFFFFFFFFFFFFFF 時發生訪問沖突。
下一篇:結構體與字串沖突,咋辦?
