看到一題: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...