1. 程式人生 > >三進位制小數 oj132

三進位制小數 oj132

三進位制小數

釋出時間: 2017年5月25日 19:57   最後更新: 2017年5月26日 00:44   時間限制: 1000ms   記憶體限制: 128M

你的任務呢,是將一個有理數轉換成三進位制小數。“什麼是三進位制小數呢?”你一定會問,這很明白,就是以三為基(二進位制數以2為基,而十進位制數則以10為基)的小數。 

有理數的值都是在0與1之間的,每個有理數都由一個分子和一個分母表示,分子與分母之間隔著一個斜槓。有理數的個數不會超過1000個。

輸出格式見樣本輸出,它是以小數點開頭的具有10位精度的3進位制數。

 複製
1/3
1/4
1/6
7/8
.1000000000
.0202020202
.0111111111
.2121212122
#include <iostream>  
#include <cmath> 
using namespace std; 
const double n = 0.0000001;
int main()
{
	int a, b;
	while (~scanf("%d/%d", &a, &b))
	{
		double num = (double)a / b;
		cout << ".";
		for (int i = 0; i < 9; i++)
		{
			num *= 3;
			cout<<(int)floor(num + n);
			num -= floor(num + n);
		}
		num *= 3;
		int ans = (int)floor(num + n);
		num -= floor(num + n);
		if (floor(num * 3 + n) >= 2 && ans <= 1)
			cout << ans + 1 << endl;
		else
			cout << ans << endl;
	}
	return 0;
}


相關推薦

小數 oj132

三進位制小數 釋出時間: 2017年5月25日 19:57   最後更新: 2017年5月26日 00:44   時間限制: 1000ms   記憶體限制: 128M 描述 你的任務呢,是將一

zzuoj1081 小數

#include"stdio.h" #include"string.h" #include"stdlib.h" void solve(int p[]) { int i; if(p[10]>=

Travelling (+狀壓dp)

題目連結 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 inline ll read(){ 5 int x=0,f=1;char ch=getchar();

、精度,Java的型別轉換

進位制的表示: 0b010 :  二進位制表示形式:前面+0n 0100  : 八進位制表示形式: 前面+0 0x001 : 16進製表示形式:前面+0x 計算機以補碼的方式進行運算 進位制的轉換: 10進位制轉換成任意進位制: 除基倒取餘,結果從按餘數下往上寫

【2018/09/15】T1-拆分-平衡

題目描述 平衡三進位制,是一種以 3 為基數,-1(以下用T表示)、0、1 為基本數碼的進位制。由於 -1 的引入,這種進位制不需要額外的符號就能直接表示負數。正因為這一點,使得平衡三進位制在加減法和乘法方面的效率要比二進位制高。 美國著名計算機學家高德納在《程式設計的藝

【2018/09/15測試T1】【SOJ 1804】平衡

【題目】 題目描述: 平衡三進位制,是一種以  為基數,(以下用 T 表示)、、 為基本數碼的進位制。由於  的引入,這種進位制不需要額外的符號就能直接表示負數。正因為這一點,使得平衡三進位制在加減法和乘法方面的效率要比二進位制高。 美國著名計算機學家高德納在《程式設計

2765 :八小數

總時間限制: 1000ms 記憶體限制: 65536kB 描述 八進位制小數可以用十進位制小數精確的表示。比如,八進位制裡面的0.75等於十進位制裡面的0.963125 (7/8 + 5/64)。所有小數點後位數為n的八進位制小數都可以表示成小數點後位數不多於3

HDU---Travelling(狀態壓縮)

題意:題意:Mr ACMer想要進行一次旅行,他決定訪問n座城市。Mr ACMer 可以從任意城市出發,必須訪問所有的城市至少一次,並且任何一個城市訪問的次數不能超過2次。n座城市間有m條道路,每條道路都有一個費用。求Mr ACMer 完成旅行需要花費的最小費用。如果不能

hdu3001(狀壓)

題目大意: 現在給你一個有n個點和m條邊的圖,每一條邊都有一個費用,每個點不能經過超過兩次,求所有點至少遍歷一次的最小費用 其中n<=10 m沒有明確限制(肯定不會超過1e5) 一看到這個資料範圍,第一想法就是狀壓QWQ 但是轉念一想,woc,每個點不一定只經過一次咯。 woc,那不就是三進位

hdu3001Travelling (狀態壓縮DP,)

Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3611 Accepted Submission

noi 八小數

1 #include <cmath> 2 #include <cstdio> 3 #include <cstring> 4 double n2=0; 5 char n1[20]; 6 int main() 7 { 8 scanf("%s",n1

C++ printf列印二進位制,,八,十六等(利用itoa)

printf是格式化輸出函式,它可以直接列印十進位制,八進位制,十六進位制,輸出控制符分別為%d, %o, %x, 但是它不存在二進位制,如果輸出二進位制可以呼叫stdlib.h裡面的itoa函式。

天平秤重問題(

[問題描述]:  有一隻天平和N只砝碼,如何設計這N只砝碼,才能使這天平能夠連續秤出的重量最大?假設砝碼的最小單位為1克,秤物時物品放在天平的左邊,砝碼可以放在右邊也可以放在左邊,不管放在哪一邊只要天平能夠平衡就行,物品的重量應是右邊砝碼總重量減去左邊砝碼的重量。 輸入一個

巧用解決天平稱重問題

1.問題描述:  用天平稱重時,我們希望用盡可能少的砝碼組合稱出儘可能多的重量。  如果有無限個砝碼,但它們的重量分別是1,3,9,27,81,……等3的指數冪  神奇之處在於用它們的組合可以稱出任意整數重量(砝碼允許放在左右兩個盤中)。  本題目要求程式設計實現:對使用者給

Barbells(

題意:給你一串b數字。一串p。左右槓鈴需要相等 然後記錄加過重量的槓鈴的重量。如題中所示。 然後對於一個p 可以加左邊 可以加右邊 或者不加三種情況。所以可以用三進位制來表示。 #include<bits/stdc++.h> using namespace s

n小數 將任意十進位制正小數分別轉換成2,3,4,5,6,7,8,9小數,小數點後保留8,並輸出。

/* n進位制小數 將任意十進位制正小數分別轉換成2,3,4,5,6,7,8,9進位制正小數,小數點後保留8位,並輸出。 例如:若十進位制小數為0.795,則輸出: 十進位制正小數 0.7950

POJ NOI0113-03 八小數(Bailian2765)

總時間限制:1000ms記憶體限制: 65536kB描述 八進位制有限小數均可以用十進位制有限小數精確地表示。比如,八進位制裡面的0.75等於十進位制裡面的0.963125 (7/8 + 5/64)。所有小數點後位數為n的八進位制小數都可以表示成小數點後位數不多於3n

與兩道趣味數學題

現在我們普遍使用十進位制進行數學運算,另一種常使用的進位制是二進位制,在計算機運算之中。日常生活中好像沒有三進位制的立足之處。1個季度是3個月,應是三進位制。交通訊號的紅綠黃的三種狀態可以表示0、1、2來描述,這似乎與三進位制沾上了邊,可是最近紅綠黃燈多變成了紅綠燈,三進制

小數轉換

八進位制有限小數均可以用十進位制有限小數精確地表示。比如,八進位制裡面的0.75等於十進位制裡面的0.963125 (7/8 + 5/64)。所有小數點後位數為n的八進位制小數都可以表示成小數點後位數不多於3n的十進位制小數。你的任務是寫一個程式,把(0,1)之間的八進位制小數轉化成十進位制小數。 Inp

轉換(十進位制轉K,K轉十進位制,整數、小數

#include <iostream> #include <cstdio> using namespace std; int main() { int k,number;int