日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

usaco ★Fractions to Decimals 分数化小数

發布時間:2023/11/27 生活经验 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 usaco ★Fractions to Decimals 分数化小数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
★Fractions to Decimals 分數化小數
寫一個程序,輸入一個形如 N/D 的分數(N 是分子,D 是分母),輸出它的小數形式。
如果小數有循環節的話,把循環節放在一對圓括號中。例如,
1/3 = .33333333 寫成 0.(3)
41/333 = 0.123123123... 寫成 0.(123)
用 xxx.0 成表示整數
典型的轉化例子:
1/3 = 0.(3)
22/5 = 4.4
1/7 = 0.(142857)
2/2 = 1.0
3/8 = 0.375
45/56 = 0.803(571428)
PROGRAM NAME: fracdec
INPUT FORMAT
單獨的一行包括被空格分開的 N 和 D, 1 <= N,D <= 100000。
SAMPLE INPUT ?(file fracdec.in)
45 56
OUTPUT FORMAT
小數的表示方法上面說的很明白了,如果輸出的長度超過 76 個字符,每行輸出 76 個。
SAMPLE OUTPUT (file fracdec.out)

0.803(571428)

這是昨天補得三題最后一題也是第二章的最后一題,這題花了我太長時間在輸出格式上面,好煩交了11次。

還有一題比這個難考數學,不考格式的有興趣的可以嘗試一下:點擊打開鏈接代碼我也放上來解釋在我前面的一篇文章有很詳細。

usaco題目。
/*
ID:jinbo wu
TASK:fracdec
LANG:C++
*/
#include<bits/stdc++.h>
using namespace std;
int v[100005];
char a[1000000];
char  b[10000];
int gcd(int n,int m)
{return m==0?n:gcd(m,n%m);
}
int main()
{freopen("fracdec.in","r",stdin);freopen("fracdec.out","w",stdout);int n,m,flag;cin>>n>>m;int temp=gcd(n,m);n/=temp;m/=temp;temp=n/m;int l=0;do{b[++l]=48+temp%10;temp/=10;}while(temp);for(int i=1;i<=l;i++)a[i]=b[l-i+1];a[++l]='.';int cnt=l;v[n%m]=++l;n=(n%m)*10;a[l]=48+(n/m)%10;while(1){temp=n%m;if(v[temp]){flag=v[temp];if(temp==0){flag=0;if(l-cnt>1)l--;} break;}v[temp]=++l;n=(n%m)*10; int t=(n/m)%10;a[l]=48+t;}int len=1;int k=l;cnt=0;for(int i=1;i<=l;i++){if(flag!=0){if(len==flag){cout<<"(";cnt++;if(cnt%76==0)cout<<endl;}cout<<a[len];cnt++;if(len==l){cout<<")";cnt++;if(cnt%76==0)cout<<endl;}len++;if(cnt%76==0)cout<<endl;}else {cout<<a[len++];if((len-1)%76==0)cout<<endl;}}cout<<endl;}



循環節長度

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{return b?gcd(b,a%b):a;
}
ll pow(ll n,ll m,ll q)
{ll ans=1;while(m){if(m&1)ans=ans*n%q;n=n*n%q;m>>=1;}return ans;
}
ll euler(ll n)
{ll ans=n;for(ll i=2;i*i<=n;i++){if(n%i==0){n/=i;ans=ans/i*(i-1);}while(n%i==0) n/=i;}if(n>1)ans=ans/n*(n-1);return ans;
}
int main()
{ll p,q;while(~scanf("%lld %lld",&p,&q)){q/=gcd(p,q);while(q%2==0) q/=2;while(q%5==0) q/=5;if(q==1){printf("0\n");continue;}ll t=euler(q);ll temp=sqrt(t);int flag=0;for(ll i=1;i<=temp;i++){if(t%i) continue;if(pow(10,i,q)==1){printf("%lld\n",i);flag=1;break;}}if(flag)continue;for(int i=temp;i>=1;i--){if(t%i) continue;if(pow(10,t/i,q)==1){printf("%lld\n",t/i);break;}}}
}



總結

以上是生活随笔為你收集整理的usaco ★Fractions to Decimals 分数化小数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。