<!DOCTYPE html>
	<html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
	<head>
<title>Dạng thập phân của phân số | Giải đề HSG tin học 12 | năm 2012-2013</title>
<meta name="description" content="Dạng thập phân của phân số | Giải đề HSG tin học 12 | năm 2012-2013 - Savefile - Tin tức -...">
<meta name="author" content="BÀI TẬP Ở NHÀ">
<meta name="copyright" content="BÀI TẬP Ở NHÀ [ducluu80@gmail.com]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index, archive, follow, noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="content-language" content="vi">
<meta property="og:title" content="Dạng thập phân của phân số | Giải đề HSG tin học 12 | năm 2012-2013">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin tức - https&#x3A;&#x002F;&#x002F;baitaponha.com&#x002F;savefile&#x002F;giai-de-tin-hoc&#x002F;dang-thap-phan-cua-phan-so-giai-de-hsg-tin-hoc-12-nam-2012-2013-38.html">
<meta property="og:site_name" content="BÀI TẬP Ở NHÀ">
<meta property="og:url" content="https://baitaponha.com/savefile/giai-de-tin-hoc/dang-thap-phan-cua-phan-so-giai-de-hsg-tin-hoc-12-nam-2012-2013-38.html">
<link rel="shortcut icon" href="https://baitaponha.com/uploads/logo.ico">
<link rel="canonical" href="https://baitaponha.com/savefile/giai-de-tin-hoc/dang-thap-phan-cua-phan-so-giai-de-hsg-tin-hoc-12-nam-2012-2013-38.html">
<link rel="alternate" href="https://baitaponha.com/rss/" title="Tin tức" type="application/rss+xml">
<link rel="alternate" href="https://baitaponha.com/rss/lap-trinh-python-co-ban/" title="Tin tức - Lập trình Python cơ bản." type="application/rss+xml">
<link rel="alternate" href="https://baitaponha.com/rss/giai-de-tin-hoc/" title="Tin tức - Giải đề tin học" type="application/rss+xml">
<link rel="alternate" href="https://baitaponha.com/rss/boi-gioi-tin-hoc/" title="Tin tức - Bồi giỏi tin học" type="application/rss+xml">
<link rel="alternate" href="https://baitaponha.com/rss/lap-trinh-c/" title="Tin tức - Lập trình C++" type="application/rss+xml">
<link rel="alternate" href="https://baitaponha.com/rss/thu-thuat-may-tinh/" title="Tin tức - Thủ thuật máy tính" type="application/rss+xml">
<link rel="preload" as="style" href="https://baitaponha.com/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://baitaponha.com/themes/egov/css/bootstrap.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://baitaponha.com/themes/egov/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://baitaponha.com/themes/egov/css/style.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://baitaponha.com/themes/egov/css/custom.css" type="text/css">
<link rel="preload" as="style" href="https://baitaponha.com/themes/egov/css/style-green.css" type="text/css">
<link rel="preload" as="style" href="https://baitaponha.com/themes/egov/css/news.css" type="text/css">
<link rel="preload" as="script" href="https://baitaponha.com/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/assets/js/jquery/jquery.cookie.js" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/themes/egov/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/themes/egov/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.googletagmanager.com/gtag/js?id=G-4JBZJ8SEPL" type="text/javascript">
<link rel="preload" as="script" href="https://baitaponha.com/themes/egov/js/bootstrap.min.js" type="text/javascript">
<link rel="StyleSheet" href="https://baitaponha.com/assets/css/font-awesome.min.css">
<link rel="StyleSheet" href="https://baitaponha.com/themes/egov/css/bootstrap.non-responsive.css">
<link rel="StyleSheet" href="https://baitaponha.com/themes/egov/css/style.css">
<link rel="StyleSheet" href="https://baitaponha.com/themes/egov/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://baitaponha.com/themes/egov/css/custom.css">
<link rel="StyleSheet" href="https://baitaponha.com/themes/egov/css/style-green.css">
<link rel="StyleSheet" href="https://baitaponha.com/themes/egov/css/news.css">
<style type="text/css">
	body{background: #fff;}
</style>

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3247389617576546"
     crossorigin="anonymous"></script>
     <!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4JBZJ8SEPL"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-4JBZJ8SEPL');
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-W4C9RPT');</script>
<!-- End Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-6V0WCB5SCB"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-6V0WCB5SCB');
</script>
<script async custom-element="amp-auto-ads"
        src="https://cdn.ampproject.org/v0/amp-auto-ads-0.1.js">
</script>		
<script async custom-element="amp-ad" src="https://cdn.ampproject.org/v0/amp-ad-0.1.js"></script>

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-262364265-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-262364265-1');
</script>
<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-262364265-1', '.baitaponha.com');
ga('send', 'pageview');
</script>
</head>
	<body>
	    <amp-auto-ads type="adsense"
                    data-ad-client="ca-pub-3247389617576546">
        </amp-auto-ads>
<!-- BEGIN Fanpage Facebook -->
<div id="fb-root"></div>
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v16.0&appId=390459604647856&autoLogAppEvents=1" nonce="H8AT1lQt"></script>

<!-- END Fanpage Facebook -->
        <!-- Google Tag Manager (noscript) -->
            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W4C9RPT"
            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
        <!-- End Google Tag Manager (noscript) -->
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">BÀI TẬP Ở NHÀ</h2>
		<p class="pull-right"><a title="BÀI TẬP Ở NHÀ" href="https://baitaponha.com/">https://baitaponha.com</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Dạng thập phân của phân số | Giải đề HSG tin học 12 | năm 2012-2013</h1>
		<ul class="list-inline">
			<li>Thứ hai - 08/05/2023 03:47</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
			Tiếp theo câu 3 của đề học sinh giỏi tin học 12 của tỉnh Nghệ An năm 2012-2013. Đây là một bài xử lý khi chia tử với mẫu của một phân số thì nó là số thập phân hữu hạn hay vô hạn tuần hoàn. Dây cũng là một trong những bài xử lý số học khá thú vị. Mời các bạn cùng tham khảo nhé.
		</div>
				<div class="imghome">
			<img alt="Đề HST Tin Nghệ An luôn là sự hấp dẫn" src="https://baitaponha.com/uploads/news/2023_05/untitled.png" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<h2><span style="font-size:14px;"><strong>Đề bài</strong></span></h2>

<p><span style="font-size:14px;"><span style="line-height:110%"><span style="page-break-after:avoid"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Câu 3. Dạng thập phân của phân số.</b></span></span><br />
<span style="font-family:&#039;Times New Roman&#039;,serif">Ngày nghỉ cuối tuần Nam rất muốn đi chơi công viên. Mẹ ra điều kiện nếu Nam biết cách chuyển một phân số sang dạng thập phân (hữu hạn hoặc vô hạn tuần hoàn) thì sẽ được đi chơi. Bạn hãy giúp bé Nam nhé.</span></span><br />
<span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Yêu cầu:</b> Cho 2 số nguyên dương P và Q&nbsp; (P, Q <span lang="EN-US" style="font-family:Symbol">£ </span>10<sup>5</sup>). Hãy đưa ra dạng thập phân (hữu hạn hoặc vô hạn tuần hoàn) của phân số <span style="position:relative"><span style="top:14.0pt"><img alt="\frac{P}{Q}" src="https://latex.codecogs.com/gif.latex?%5Cfrac%7BP%7D%7BQ%7D" /></span></span>.</span></span><br />
<span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Dữ liệu: </b>Vào từ file văn bản Bai3.inp: Chỉ một dòng duy nhất chứa 2 số nguyên dương P và Q.&nbsp;</span></span><br />
<span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Kết quả: G</b>hi ra file văn bản Bai3.out:<b> </b>Chỉ một dòng duy nhất là dạng thập phân của phân số <span style="position:relative"><span style="top:14.0pt"><img alt="\frac{P}{Q}" src="https://latex.codecogs.com/gif.latex?%5Cfrac%7BP%7D%7BQ%7D" /></span></span>&nbsp;theo quy cách như các ví dụ dưới đây:</span></span></span></p>

<table class="MsoTableGrid" style="width:668px; border-collapse:collapse; border:none" width="668">
	<tbody>
		<tr>
			<td style="border-bottom:1px solid black; width:95px; padding:0cm 7px 0cm 7px; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Bai3.inp</b></span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:1px solid black; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Bai3.out</b></span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:1px solid black; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Bai3.inp</b></span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:1px solid black; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Bai3.out</b></span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:1px solid black; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Bai3.inp</b></span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:1px solid black; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Bai3.out</b></span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:1px solid black; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Bai3.inp</b></span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:1px solid black; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif"><b>Bai3.out</b></span></span></span></p>
			</td>
		</tr>
		<tr>
			<td style="border-bottom:1px solid black; width:95px; padding:0cm 7px 0cm 7px; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif">32567 &nbsp;125</span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif">260.536</span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif">367 &nbsp;12</span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif">30.58(3)</span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif">67 &nbsp;737</span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif">0.(09)</span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif">200 &nbsp;5</span></span></span></p>
			</td>
			<td style="border-bottom:1px solid black; width:82px; padding:0cm 7px 0cm 7px; border-top:none; border-right:1px solid black; border-left:none" valign="top">
			<p><span style="font-size:14px;"><span style="line-height:110%"><span style="font-family:&#039;Times New Roman&#039;,serif">40</span></span></span></p>
			</td>
		</tr>
	</tbody>
</table>

<h1>&nbsp;</h1>

<h2><span style="font-size:14px;"><strong>Code mẫu bằng pascal</strong></span></h2>

<pre>
<code class="language-python">const   fi      =       &#039;Bai3.inp&#039;;
        fo      =       &#039;Bai3.out&#039;;
        max  	= 100000;
type   	m1		= array&#91;0..max&#93; of longint;
var             t,m     : longint;
                l1,l2   : longint;
        	a,d	: m1;
        	vhth  	: boolean;
                f       : text;
procedure nhap;
begin
  assign(f,fi);
  reset(f);
  readln(f,t, m);
  close(f);
end;
procedure chia;
var r: longint;
begin
  fillchar(a,sizeof(a),0);
  fillchar(d,sizeof(d),0);
  l1:= 0; {vi tri chu so thap phan bat dau cua chu ky}
  l2:= 0; {so chu so o phan thap phan ke ca truoc chu ky va trong chu ky}
  vhth:= true; {xac nhan co vo han tuan hoan hay khong}
  a&#91;0&#93;:= t div m; {phan nguyen cua phan so  t/m}
  t   := t mod m; {phan du dau tien de tao ra phan thap phan}
  if t=0 then vhth:= false {neu phan du bang 0 thi phan so la so nguyen}
  else
  if t&gt;0 then {neu phan du khac khong thi tiep tuc chia tao ra phan thap phan}
  repeat
    inc(l2);
    d&#91;t&#93;:= l2;{ d danh dau: khi du la t,  chia tiep duoc chu so thap phan thu  l2}
    t   := t * 10;
    a&#91;l2&#93;:= t div m; {mang ket qua A:  Tu A&#91;i&#93;  la chu so  thap phan thu  i }
    t   := t mod m; {du moi}
     if t=0 then begin {du moi bang 0, thi phan so la thap phan huu han}
 	 vhth:= false; {xac nhan la thap phan huu han}
	 break;
     end;
     if d&#91;t&#93;&gt;0 then l1:= d&#91;t&#93;; {da gap so du cu tao ra chu so thap phan o}
     	{vi tri d&#91;t&#93;,  vay co chu ki va suy ra  vi tri chu so bat dau cua chu ki la L1=d&#91;t&#93; }
  until d&#91;t&#93;&gt;0;
end;
procedure ghi;
var f: text;i: longint;
begin
  assign(f,fo);  rewrite(f);
  write(f,a&#91;0&#93;); {ghi phan nguyen}
  if l2&lt;&gt;0 then write(f,&#039;.&#039;); {neu co phan thap phan thi ghi dau cham}
  if not vhth then begin {neu khong co chu ki}
    for i:=1 to l2 do write(f,a&#91;i&#93;);
  end
  else begin {neu co chu ki}
    for i:=1 to l1-1 do
      write(f,a&#91;i&#93;); {phan thap phan truoc chu ki}
    if l1&lt;&gt;0 then begin
      write(f,&#039;(&#039;);
      for i:=l1 to l2 do write(f,a&#91;i&#93;); {phan chu ki}
      write(f,&#039;)&#039;);
    end;
  end;
  close(f);
end;
BEGIN
  nhap;
  chia;
  ghi;
END.
</code></pre>

<h3><span style="font-size:14px;"><strong>Giải thích</strong></span></h3>
<span style="font-size:14px;">Chúng ta chia như thời đi học tiểu học thôi. Trong code đã chú thích rõ rồi ha.</span>

<h2><span style="font-size:14px;"><strong>Giải quyết bằng Python</strong></span></h2>

<p><span style="font-size:14px;">Để chuyển một phân số thành dạng thập phân, ta có thể sử dụng thuật toán chia. Đầu tiên, ta tính phần nguyên của thương bằng cách lấy phần nguyên của&nbsp;<code>`P/Q`</code>. Sau đó, ta tính phần dư của&nbsp;<code>`P/Q`</code>&nbsp;và nhân nó với 10 để có được số tiếp theo của phần thập phân. Lặp lại quá trình trên với phần dư mới để tính các số phần thập phân tiếp theo cho đến khi phần dư bằng 0 hoặc đến khi ta đã tính được đủ số thập phân tối đa cho phép.</span></p>

<p><span style="font-size:14px;">Tuy nhiên, nếu phần dư của thương&nbsp;<code>`P/Q`</code>&nbsp;xuất hiện lặp lại, tức là nếu ta đã tính được mãi mãi vẫn chỉ ra phần thập phân giống với một mẫu lặp, thì phân số đó sẽ là một số tuần hoàn vô hạn. Trong trường hợp này, ta cần phải lưu trữ lại số lần xuất hiện của mẫu lặp và lặp lại quá trình trên cho đến khi tìm được một mẫu tương tự như trước đó. Để xác định các số hữu hạn và tuần hoàn, ta cần sử dụng 3 biến:&nbsp;<code>`integerPart`</code>&nbsp;(phần nguyên),&nbsp;<code>`decimalPart`</code>&nbsp;(phần thập phân) và&nbsp;<code>`loopPart`</code>&nbsp;(phần tuần hoàn).</span></p>

<p><span style="font-size:14px;">Đầu tiên ta xây dựng hàm chia xử lý chuyển đổi phân số thành số thập phân như sau:</span></p>

<h3><span style="font-size:14px;"><strong>Hàm chuyển đồi phân số thành số thập phân</strong></span></h3>

<pre>
<code class="language-python">def fraction_to_decimal(P, Q):
    if P == 0:
        return &quot;0&quot;
    integerPart = &quot;&quot; if P * Q &gt; 0 else &quot;-&quot;  # Phần nguyên của kết quả (có thể là số âm)
    P, Q = abs(P), abs(Q)  # Chuyển đổi số âm thành số dương
    integerPart += str(P // Q)  # Tính phần nguyên
    decimalPart = &quot;&quot;  # Phần thập phân
    loopPart = &quot;&quot;  # Phần tuần hoàn
    modDict = {}  # Dictionary lưu trữ phần dư và vị trí của nó
    mod = P % Q  # Tính phần dư ban đầu
    while mod != 0 and mod not in modDict:
        modDict&#91;mod&#93; = len(decimalPart)  # Lưu trữ phần dư và vị trí của nó
        mod *= 10  # Đưa phần dư lên hàng đơn vị để tính phần thập phân tiếp theo
        decimalPart += str(mod // Q)  # Tính phần thập phân
        mod %= Q  # Tính phần dư tiếp theo
    if mod != 0:
        loopStartIndex = modDict&#91;mod&#93;  # Lấy vị trí bắt đầu của phần tuần hoàn
        loopPart = &quot;(&quot; + decimalPart&#91;loopStartIndex:&#93; + &quot;)&quot;  # Lấy phần tuần hoàn
        decimalPart = decimalPart&#91;:loopStartIndex&#93;  # Lấy phần hữu hạn
    else:
        decimalPart = decimalPart  # Không có phần thập phân tuần hoàn
    return integerPart + ((&quot;.&quot;+decimalPart) if decimalPart != &quot;&quot; else &quot;&quot;) + loopPart  # Trả về kết quả cuối cùng
</code></pre>

<p>&nbsp;</p>

<p><span style="font-size:14px;">Hàm&nbsp;<code>`fraction_to_decimal(P, Q)`</code>&nbsp;nhận vào hai số nguyên dương&nbsp;<code>`P`</code>&nbsp;và&nbsp;<code>`Q`</code>&nbsp;biểu diễn phân số cần chuyển đổi. Hàm trả về dạng thập phân tương ứng, có thể là một số hữu hạn hoặc tuần hoàn.</span></p>

<p><span style="font-size:14px;">Lưu ý rằng đối với số âm, ta cần xác định phần âm trong dạng thập.</span></p>

<h3><span style="font-size:14px;"><strong>Code đầy đủ bằng Python</strong></span></h3>

<pre>
<code class="language-python">def fraction_to_decimal(P, Q):
    if P == 0:
        return &quot;0&quot;
    integerPart = &quot;&quot; if P * Q &gt; 0 else &quot;-&quot;  # Phần nguyên của kết quả (có thể là số âm)
    P, Q = abs(P), abs(Q)  # Chuyển đổi số âm thành số dương
    integerPart += str(P // Q)  # Tính phần nguyên
    decimalPart = &quot;&quot;  # Phần thập phân
    loopPart = &quot;&quot;  # Phần tuần hoàn
    modDict = {}  # Dictionary lưu trữ phần dư và vị trí của nó
    mod = P % Q  # Tính phần dư ban đầu
    while mod != 0 and mod not in modDict:
        modDict&#91;mod&#93; = len(decimalPart)  # Lưu trữ phần dư và vị trí của nó
        mod *= 10  # Đưa phần dư lên hàng đơn vị để tính phần thập phân tiếp theo
        decimalPart += str(mod // Q)  # Tính phần thập phân
        mod %= Q  # Tính phần dư tiếp theo
    if mod != 0:
        loopStartIndex = modDict&#91;mod&#93;  # Lấy vị trí bắt đầu của phần tuần hoàn
        loopPart = &quot;(&quot; + decimalPart&#91;loopStartIndex:&#93; + &quot;)&quot;  # Lấy phần tuần hoàn
        decimalPart = decimalPart&#91;:loopStartIndex&#93;  # Lấy phần hữu hạn
    else:
        decimalPart = decimalPart  # Không có phần thập phân tuần hoàn
    return integerPart + ((&quot;.&quot;+decimalPart) if decimalPart != &quot;&quot; else &quot;&quot;) + loopPart  # Trả về kết quả cuối cùng
# Đọc dữ liệu vào
with open(&#039;Bai3.inp&#039;, &#039;r&#039;) as f:
    P, Q = map(int, f.readline().strip().split())

# Chuyển đổi phân số thành dạng thập phân
result = fraction_to_decimal(P, Q)

# Ghi kết quả vào file
with open(&#039;Bai3.out&#039;, &#039;w&#039;) as f:
    f.write(result)
</code></pre>
<span style="font-size:14px;"> &nbsp;</span>

<h2><span style="font-size:14px;"><strong>Các test của đề</strong></span></h2>
<span style="font-size:14px;"> Các test của đề các bạn tải ở cuối bài viết nhé. Chúc các&nbsp; bạn chạy full test.</span>

<h3><span style="font-size:14px;"><strong>Để nắm được thông tin cập nhật mới cũng như phản hồi về trang, các bạn tham gia nhóm facebook:</strong></span></h3>
<span style="font-size:14px;"> <strong>Nhóm facebook:</strong> <a href="https://www.facebook.com/groups/baitaponha"><span style="color:rgb(52, 152, 219);"><strong>f / BAITAPONHA</strong></span></a><br />
Trang facebook: <strong><a href="https://www.facebook.com/hocquainternet"><span style="color:rgb(52, 152, 219);">f / HỌC MÃI</span></a></strong></span><br />
&nbsp;
		</div>
				<div id="author">
						<p>
				<strong>Tác giả:</strong>
				<a href="https://baitaponha.com/author/admin/">admin</a>
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://baitaponha.com/savefile/giai-de-tin-hoc/dang-thap-phan-cua-phan-so-giai-de-hsg-tin-hoc-12-nam-2012-2013-38.html" title="Dạng thập phân của phân số | Giải đề HSG tin học 12 | năm 2012-2013">https://baitaponha.com/savefile/giai-de-tin-hoc/dang-thap-phan-cua-phan-so-giai-de-hsg-tin-hoc-12-nam-2012-2013-38.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; BÀI TẬP Ở NHÀ
		</div>
		<div id="contact">
			<a href="mailto:ducluu80@gmail.com">ducluu80@gmail.com</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://baitaponha.com/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
<div id="run_cronjobs" style="visibility:hidden;display:none;"><img alt="cron" src="/index.php?second=cronjobs&amp;p=p725H70a" width="1" height="1" /></div>
<script src="https://baitaponha.com/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="btol",nv_check_pass_mstime=21538000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://baitaponha.com/assets/js/language/vi.js"></script>
<script src="https://baitaponha.com/assets/js/DOMPurify/purify3.js"></script>
<script src="https://baitaponha.com/assets/js/global.js"></script>
<script src="https://baitaponha.com/assets/js/site.js"></script>
<script src="https://baitaponha.com/themes/default/js/news.js"></script>
<script src="https://baitaponha.com/assets/js/jquery/jquery.cookie.js"></script>
<script src="https://baitaponha.com/themes/egov/js/main.js"></script>
<script src="https://baitaponha.com/themes/egov/js/custom.js"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4JBZJ8SEPL"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag('js',new Date);gtag('config','G-4JBZJ8SEPL');</script>
<script src="https://baitaponha.com/themes/egov/js/bootstrap.min.js"></script>
</body>
</html>