1. 程式人生 > >HDU 1099 數學計算

HDU 1099 數學計算

 這是一到簡單題,但是題意比較難以理解!說白了就是求n/1+n/2+n/3+----+n/n!這道題就是直接求解,先利用同分的思想,即最小公倍數求出所有的的分母的最小公倍數!然後進行分數的求和!注意分子和分母的沒有相除之前需要注意範圍超過了整形

#include <iostream>
using namespace std;

_int64 gcd(_int64 a,_int64 b)
{
	if(b==0) return a;
	else return gcd(b,a%b);
}

int main()
{

	int i,n,size1,size2;
	_int64 number,n1,n2;
	_int64 integer;//整數部分
	_int64 fenzi;//分子
	_int64 fenmu;//分母
	_int64 a[23];//a[n]表示輸入為n時,從1到n這些數的最小公倍數

	a[1]=1;
	for(i=2;i<=22;i++) a[i]=i*a[i-1]/gcd(i,a[i-1]);//兩個數的最小公倍數等於這兩個數的乘機除以他們的最大公約數

	while(cin>>n)
	{
		fenzi=0;
		for(i=1;i<=n;i++) fenzi += a[n]/i;            
		fenzi *= n;
		number = gcd(fenzi,a[n]); //分子分母的最大公約數
		fenzi = fenzi/number; //約分後的分子
		fenmu = a[n]/number; //約分後的分母
		integer = fenzi/fenmu; //結果的整數部分
		fenzi = fenzi-integer*fenmu; //最終結果的分子

		if(fenzi==0) { printf("%I64d\n",integer); continue; }

		size1=size2=0; //size1,size2分別為整數部分的位數和分子的位數
		n1=integer; n2=fenmu;
		while(n1!=0) { size1++; n1/=10; }
		while(n2!=0) { size2++; n2/=10; }

		//按題目要求的格式列印結果
		for(i=0;i<=size1;i++) printf(" ");
		printf("%I64d\n",fenzi);
		printf("%I64d ",integer);
		for(i=0;i<size2;i++) printf("-");
		printf("\n");
		for(i=0;i<=size1;i++) printf(" ");
		printf("%I64d\n",fenmu);
	}
	return 1;
}


相關推薦

HDU 1099 數學計算

 這是一到簡單題,但是題意比較難以理解!說白了就是求n/1+n/2+n/3+----+n/n!這道題就是直接求解,先利用同分的思想,即最小公倍數求出所有的的分母的最小公倍數!然後進行分數的求和!注意分子和分母的沒有相除之前需要注意範圍超過了整形 #include <i

2016"百度之星" - 初賽(Astar Round2A)--HDU 5690 |數學轉化+快速冪

分享 otto lld 方法 can a* sca uic left Sample Input 3 1 3 5 2 1 3 5 1 3 5 99 69 Sample Output Case #1: No Case #2: Yes Case #3: Yes

『TensorFlow』簡單的數學計算&張量操作

cep 裁剪 rec arr variable sum() 乘法 減法 nump tf.pow() tf.sqrt() tf.add() tf.add_n() tf.subtract() :減法 tf.matmul() :矩陣乘法 tf.red

HDU 5974 數學

tip contains fin meet def tle table contain positive A Simple Math Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/

HDU 5984 數學期望

define eps else 區域 比較 double scan clu file 對長為L的棒子隨機取一點分割兩部分,拋棄左邊一部分,重復過程,直到長度小於d,問操作次數的期望。 區域賽的題,比較基礎的概率論,我記得教材上有道很像的題,對1/len積分,$ln(L)-

Shell腳本筆記(三)shell中的數學計算

pos 使用 pan 數學計算 options ons post ash 用法 shell中的數學計算 一、使用方括號 #!/bin/bash a=10 b=29 c=88 res=$[$a * ($c-$b)] echo $res 二、bc的用法 bc技術器實際上

『PyTorch』第五彈_深入理解Tensor對象_中下:數學計算以及numpy比較

python 輸入 簡單 相對 range pri std lin block 一、簡單數學操作 1、逐元素操作 t.clamp(a,min=2,max=4)近似於tf.clip_by_value(A, min, max),修剪值域。 a = t.arange(0,6).

1005:Number Sequence(hdu數學規律題)

his arch ear iostream tput ostream htm 數據 long Problem Description A number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (

TJOI 2018 數學計算

tchar style ati show stat href char 數學計算 targe 題鏈 對時間建線段樹,當然,你要寫中國剩余定理我也是很資瓷。 #include<bits/stdc++.h> #define LL long long #

BZOJ5334:[TJOI2018]數學計算——題解

stream OS 輸出 訪問 logs uri getchar getchar() TP https://www.lydsy.com/JudgeOnline/problem.php?id=5334 小豆現在有一個數x,初始值為1. 小豆有Q次操作,操作有兩種類型:

BZOJ5334 [TJOI2018] 數學計算 【線段樹分治】

amp IT bit 分治 continue lse col %d ++ 題目分析:   大概是考場上的簽到題。首先mod不是質數,所以不能求逆元。註意到有加入操作和刪除操作。一個很典型的想法就是線段樹分治。建立時間線段樹然後只更改有影響的節點,最後把所有標記下傳。時間復雜

bzoj5334: [Tjoi2018]數學計算

水題 ace 什麽 自然 str IT 然而 math iostream 這是個悲傷的故事捂臉 噶爺爺安利了到水題,自然而然的被D飛 隊長看了一眼說他不會 然而我寫T了的時候他過來又看了下說粗略看沒啥問題 OZY一眼就說我會nlogn的 結果題意看了20分鐘沒看懂

習題 3 數字和數學計算

eggs out 早就 count sla 行業 廣告 擔心 poi 每一種編程語言都包含處理數字和進行數學計算的方法。不必擔心,程序員經常撒謊說他們是多麽牛的數學天才,其實他們根本不是。如果他們真是數學天才,他們早就去從事數學相關的行業了,而不是寫寫廣告程序和社交網絡遊戲

hdu 5117 數學公式展開 + dp

return nbsp clu pri make n) for inf bsp 題目大意:有n個燈泡,m個按鈕,(1 <= n, m <= 50),每個按鈕和ki 個燈泡相關, 按下後,轉換這些燈泡的狀態,問你所有2^m的按下按鈕的 組合中亮著的燈泡的數量的三

黃聰:JS數學計算精度修正

function 浮點數 turn 計算 filesize add follow fun his 問題描述 如果我問你,4330.61乘以100等於多少,我猜你肯定跟我說:“肯定是 433061”啊! 是啊,要我我也是這麽回答,來來來我們

【BZOJ5334】數學計算(線段樹)

names efi stream lin ++ show print get http 【BZOJ5334】數學計算(線段樹) 題面 BZOJ 洛谷 題解 簡單的線段樹模板題??? 咕咕咕。 #include<iostream> #include<cstd

數學計算 的bug:(理論)數學上等價,實際運行未必等價

lambda 示例 計算表達 表達式 等價 pre 數學 lam sqrt 1. 計算表達式的值(lambda 表達式) fun1 和 fun2 理論上是等價的;同樣的輸入情形下,兩種輸出結果不一致。 2. 運行示例 >>> x=1e16 >>

BZOJ 5334: [Tjoi2018]數學計算

線段樹裸題 難度在於認識到這個沒法線性做 #include<cstdio> using namespace std; int n,mod,tr[400005]; void insert(int t,int l,int r,int x,int y){ if (l==r){

hdu-1115(計算多邊形重心)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1115 思路:帶公式:http://www.cnblogs.com/jbelial/archive/2011/08/08/2131165.html #include<iostream> #in

[BZOJ5334][TJOI2018]數學計算(exgcd/線段樹)

模意義下除法若結果仍為整數的話,可以記錄模數的所有質因子,計算這些質因子的次冪數,剩餘的exgcd解決。 $O(n\log n)$但有9的常數(1e9內的數最多有9個不同的質因子),T了。 1 #include<cstdio> 2 #include<algor