C语言题集
学习C语言过程中值得记录的题目。
JessieXu.
这个作者很懒,什么都没留下…
展开
-
化小数为分数的例题及技巧
题解思路:代码:#include<iostream>#include<iomanip> #include<sstream>#include<cstring>#include<algorithm>#include<cmath>using namespace std;long GCD(long a...原创 2020-05-06 23:10:16 · 90 阅读 · 0 评论 -
切蛋糕问题
假设每一刀沿着半径切,那么切k刀就有k块。要想切出的块数最少,必须保证重合刀数最多。重合刀数为gcd(p,q),因为在切了k = gcd(p,q)刀后,再切x刀(x * k= p)或者y刀(y * k = q),都不会有重合。综上,切的总刀数(或说块数)为(p + q - gcd(p,q))。#include<iostream>#include<algorithm...原创 2020-04-22 17:33:51 · 1158 阅读 · 4 评论 -
汉诺塔问题总结(2)
今天在网上看到一个非常nb的汉诺塔解法——二进制计数。举个例子:有8个盘子,从小到大编号为0-7,分别对应8位二进制数的低到高位。我们会惊奇地发现,每次移动0号盘子,二进制最低位就会变成1(加1),在移动1号盘子时,倒数第二位就会变成1……以此类推,能得出二进制进位与移动盘子次数相对应的话,从低位开始最早出现1的那一位编号(digit),就对应当前移动盘子的编号。加上例题和代码帮助理解:...原创 2020-04-05 15:17:24 · 286 阅读 · 0 评论 -
汉诺塔问题的总结(1)
首先要知道:对于n个盘子的汉诺塔,最少的移动次数为(2^n-1),在移动过程中会出现2的n次方种不同状态。例题一:题目描述:n个盘子的汉诺塔问题的最少移动次数是2^/n-1,即在移动过程中会产生2的n次方个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系 :n=m+p+qa1>a2>…>a...原创 2020-04-04 11:07:38 · 6250 阅读 · 0 评论 -
十六进制的计算程序
十六进制的计算程序今天做题碰到一道A+B问题,要求计算十六进制情况下的正确结果。做题过程中发现十六进制结果正负数的表达有玄机,在这里把代码写出来。#include<iostream>#include<iomanip> int main(){ long long a,b; while(cin>>hex>>a>>b) {...原创 2020-03-25 17:35:42 · 534 阅读 · 0 评论