Ordered Fractions 运行超时啊~
来源:互联网 发布:淘宝寿衣门女主角 编辑:程序博客网 时间:2024/06/06 19:55
#include<fstream>#include<iostream>#include<string>#include<math.h>using namespace std;int myitoa(int data, string* p, int num) { if (p == NULL) { return -1; } if (data < 0) { *p++ = '-'; data = 0 - data; } int temp = 0; int flag = 0; //标志位 0-不存储 1-存储 if (num == 10) {//十进制 for (int i = 0; i < 10; i++) { temp = static_cast<int>(data / pow(10.0, 9-i));// pow(i,j),求i的j次方,temp取得当前最高位 if (temp != 0) //去掉最前面的0 { flag = 1;//将标志位变为1,可以存储 } if (flag != 0) { //*p++ = temp + '0'; //变成字符*p+= temp + '0'; //变成字符 data = data % static_cast<int>(pow(10.0, 9-i)); } } } } bool hasgy(int i,int j){for(int k=2;k<=i;k++){if(i%k==0 && j%k==0)return false;}return true;}int main(){ifstream fin ("frac1.in");ofstream fout ("frac1.out");int n,i,j,k=0;float a[10000];string zi[20000];string mu[20000];fin>>n;for(i=2;i<=n;i++)//i:分母{for(j=1;j<i;j++)//j:分子{if((hasgy(i,j))&&(i%j!=0 || j==1))//保证既约{a[k]=(float)j/i;myitoa(j,zi+k,10);myitoa(i,mu+k,10);k++;}}}for(i=0;i<k;i++){for(j=i+1;j<k;j++){if(a[i]>a[j]){float temp;temp=a[i];a[i]=a[j];a[j]=temp;string tempc;tempc=zi[i];zi[i]=zi[j];zi[j]=tempc;tempc=mu[i];mu[i]=mu[j];mu[j]=tempc;}}}fout<<"0/1"<<endl;for(i=0;i<k;i++)fout<<zi[i]<<'/'<<mu[i]<<endl;fout<<"1/1"<<endl;return 0;}