1到1 50的分數相加

2021-07-10 12:03:06 字數 1012 閱讀 7935

看到一題:1+1/2+1/3+...+1/50,for迴圈實現;

第一想法,不就是通分嘛,有什麼難的,於是開寫。

#include "stdafx.h"

#include using namespace std;

//最大公約數

long long maxgy( long long a,long long b)

return b;

}//最小公倍數

long long mingb(long long a, long long b)

typedef struct

{ long long a ;

char ch;

long long b;

void show(){

cout注意到我用了long long,具體long long與_int64有啥區別,請參考

其實,我一開始是用int的,就是這個樣子了,注意到,正確答案也就沒幾個了,為啥呢?

肯定是int的範圍太小,有運算元越界了,然後我用unsigned int, long ,unsigned long,都不對

於是我祭出了大殺器——long long,說實話之前從沒請過這位仁兄出場;

然後執行下

其實會發現,最後幾位的結果還是不對啊,這...這...我就不知道,這個時候我重新審視這個過程,你以為你的極限是long,但是32位下,long與int其實都是4個位元組,你以為unsigned一下就行了,其實不過是表示正數翻了倍而已,long long你又以為應該行了吧,但是這只是到1/50,如果到1/100呢,到1/1000呢,如果按照這種方法,總會有突破範圍的那個數。

盜用一張圖,來說下這些基本資料型別的範圍。

機試真題 關於分數相加的問題

模擬大致的分母相加減的問題 利用最大公約數和最小公倍數可以解決 對於不同分母,求最小公倍數 加和化簡之後,採用最大公約數進行分子分母同除計算 最小公倍數和最大公約數相關的問題之前總結過 include include includeusing namespace std int gys int a,...

scala程式設計系列 14 實現分數相加的類 下

繼續上篇 9.方法過載 上面寫這這麼多,但還不能做混合運算。即不能寫成r 2,只能寫成r new rational 2 package com.mytest.ch2 class rational n int,d int object rational 輸出為7 6 1 3 1 6 3 47 2 3 ...

1018 奇怪的信 分數 1

有一天,小明收到一張奇怪的信,信上要小明計算出給定數各個位上數字為偶數的和。例如 5548,結果為12,等於 4 8 小明很苦惱,想請你幫忙解決這個問題。輸入資料有多組。每組佔一行,只有乙個整整數,保證數字在32位整型範圍內。對於每組輸入資料,輸出一行,每兩組資料之間有乙個空行。415326 326...