一直超时...已经尽可能优化了,但其实是对于题目的理解还不够深刻(本人数学辣鸡)

尽管我试图通过记忆化来缩短时间,但是大量的遍历会占用非常多的时间,这也是超时的原因所在,那么有没有更优解呢?

大胆点

不用遍历直接找到呢?

答案是有的

第一版本:

#include<stdio.h>
int Gcd(int x,int y){return y ? Gcd( y ,x % y) : x ;
}
int num[1000];
/*
3
1 2
2 3
3 7
*/int main()
{int n;scanf("%d",&n);while(n--){int a,b;scanf("%d %d",&a,&b);int zi,mu;zi=a;mu=b;if(a==1){printf("%d\n",b);}else{int cnt=0;int s,temp=1;for(int i=temp;i<=1e9;i++){if(zi*i>=mu){zi=zi*i-mu;num[cnt]=i;cnt++;mu*=i;s=Gcd(zi,mu);zi/=s;mu/=s;temp=i;}if(zi==0)     break;else      continue;}for(int i=0;i<cnt;i++){printf("%d",num[i]);if(i<cnt-1) printf(" "); }printf("\n");for(int i=0;i<=cnt;i++) num[i]=0;}}return 0;
}

第二版本:在巨佬的点拨下找到了优化的方法

#include<stdio.h>
typedef long long ll;
ll Gcd(ll x,ll y){return y ? Gcd( y ,x % y) : x ;
}
/*
3
1 2
2 3
3 7
*/int main()
{int n;scanf("%d",&n);while(n--){ll a,b;scanf("%lld %lld",&a,&b);ll zi,mu;zi=a;mu=b;for(;;){if(zi==1){printf("%lld\n",mu);break;}else{ll temp=zi,s=mu/zi+1;//个人感觉这一步是精髓,极大简化了计算printf("%lld ",s);zi=zi*s-mu;mu*=s;          ll p=Gcd(zi,mu);mu/=p;zi/=p;         }}}return 0;
}

XTU OJ 1352 Fraction相关推荐

  1. XTU OJ 1324 Hash

    XTU OJ 1324 Hash Hash 题目描述 H a s h Hash Hash是一种很常用的数据结构,Hash技术的关键在于Hash函数的选取. 一种常用整数的 H a s h Hash H ...

  2. XTU OJ 1375 Fibonacci

    XTU OJ 1375 Fibonacci 题目描述 小明非常喜欢FibonacciFibonacciFibonacci数列,数列为 f1=1,f2=2,fn=fn−1+fn−2f_1=1,f_2=2 ...

  3. XTU OJ 1355 Euler‘s Totient Function(欧拉函数)

    XTU OJ 1355 Euler's Totient Function(欧拉函数) 题目描述 对于整数n,定义ϕ(n)ϕ(n)ϕ(n)为小于或等于n,并与n互质的整数的个数,比如6,比它小的和它互质 ...

  4. NUIST OJ 1352 回顾 【差分】

    NUIST OJ 1352 回顾 [差分] NUIST OJ 1352 回顾 差分 题目 原问题 差分是什么 求An数组和Sn数组 快速求区间和 代码呈现 随便说说 后记 题目 题目描述 第三次选择那 ...

  5. 质因数分解唯一定理(XTU OJ)

    今年的oj 很有几道题用到了,这里介绍一下 质因数分解(唯一分解定理) 基本概念: 每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数. 分解质因数只针对合 ...

  6. XTU Oj 128

    Rotate 题目描述 一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,每次转动90度. 我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大.请问最大 ...

  7. XTU OJ 1359 字符频度

    淦啊,好久不写memset都忘记怎么写了,调了半天QAQ #include<stdio.h> #include<string.h> char a[1005]; int alp[ ...

  8. xtu oj 1375斐波纳契

    题目描述 小明非常喜欢斐波纳契数列,数列为f1=1,f2=2,fn=fn−1+fn−2.小明想知道对于一个整数n,使得n=fi+fj+fk的组合有多少种?比如5=1+1+3或者5=1+2+2,有2种. ...

  9. XTU—OJ 1258矩阵

    矩阵 题目描述 编写一个程序,将1~n2按行依次填入n×n的矩阵,执行若干条行或者列的循环移动的指令,再将数字按行依次取出. 指令如下: 指令 含义 L x y x行循环左移y次 R x y x行循环 ...

  10. XTU OJ 1397 Patchouli的金字塔

    题目描述 Patchouli想要绘制一个金字塔.金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下: 每个三角形由*,/,\和-组成,分别代表三角形的顶点和三条边. 第一行只包含一个正三 ...

最新文章

  1. 仅用语音,AI就能“脑补”你的脸! | 技术头条
  2. enumerate()函数用法
  3. 深度学习核心技术精讲100篇(二十四)-简单谈下深度学习在中文分词中的应用
  4. linux的系统架构,(转载)图解Linux系统的系统架构
  5. python 值传递还是引用传递_python函数是值传递还是引用传递
  6. 用计算机画好看的图形,如何画一手漂亮的电脑效果图?技巧案例赏析!
  7. git@github.com:Permission denied(publickey).fatal: Could not read form remote repository错误
  8. Linux笔记-nohup和
  9. U盘安装Ubuntu14.04 server版 提示无法挂载cd-rom数据的解决办法
  10. linux中xy是什么命令,Linux命令中chmod 777 以及drwxr-xr-x分别代表什么意思
  11. How MapReduce Works
  12. Markdown(六)——表格合并单元格增加标题
  13. Java并发包-原子类
  14. 背景图片自适应屏幕大小CSS写法
  15. Linux系统下安装flash player插件
  16. 交易开拓者-附录二:函数速查
  17. 位运算符(,|,~,^,同或,>>,<<)
  18. go开发虚拟串口服务器,vspd.go
  19. ambari-server HA
  20. 【20221220】Windows通过网线共享网络及小猫咪局域网共享

热门文章

  1. 生活-急救常识(2)
  2. GPS导航知识——DGPS
  3. 公众号添加跳转网页链接
  4. 查找100-200以内素数
  5. html历史记录代码,js 实现浏览历史记录示例
  6. Python:正则re.sub实现简易的模板引擎
  7. 免费图片库网站推荐(国外高清可商用)
  8. iOS 应用测试总结
  9. 长连接和短连接的定义区别,以及应用场景
  10. 大数据整体技术流程及架构