UVA 550 Multiplying by Rotation (简单递推)

题意:有些数字是可以这样的:abcd*k=dabc,例如179487 * 4 = 717948,仅仅将尾数7移动到前面,其他都不用改变位置及大小。这里会给出3个数字b、d、k,分别代表b进制、尾数、第2个乘数。既然是尾数,必有d<b。求这个abc...d一共有几位数(按b进制算)。

思路:举例,进制是十,假设这个数字是6位的,那么abcdef代表了这6位数,f已经给出,是7,且另个乘数是4。因为abcde7*4=7abcde。

(1)推e : 4*7=28,那么e一定是为8。

(2)推d:abcd87*4=abcd8,去掉不必要的东西继续算,abcd8*4=abcd,那么4*8=32,还得加上第1步中遗留的2,32+2=34,那么d肯定是4;

(3)推c:abc487*4=abc48,去掉冗余,abc4*4=abc,那么4*4=16+3=19,那么c就为9。

(4)以此类推,直到a=7为止。

这里已经假设了是6位的,是因为我已经知道了答案,我们可以不必要假设是几位的,只需要一直推下去,直到推出最后一个数字就行了(题意给的d),且要无进位才行。有进位还需要继续直到进位为0。

 1 #include <bits/stdc++.h>
 2 #define LL long long
 3 using namespace std;
 4 int a, b, c;
 5 int main()
 6 {
 7    // freopen("input.txt", "r", stdin);
 8     while(~scanf("%d%d%d",&a,&b,&c))
 9     {
10         int e=b;
11         int f=0;
12         int cnt=1;
13         int g=0;
14         while(1)
15         {
16             g=e*c+f;    //总结果
17             e=g%a;      //e为每次计算的最后一位
18             f=g/a;      //f为需要进位的数
19             if(g==b)    //等于开头
20             {
21                 printf("%d\n",cnt);
22                 break;
23             }
24             cnt++;
25         }
26     }
27     return 0;
28 }

AC代码

时间: 2024-11-06 21:36:54

UVA 550 Multiplying by Rotation (简单递推)的相关文章

UVA - 590Always on the run(递推)

题目:UVA - 590Always on the run(递推) 题目大意:有一个小偷现在在计划着逃跑的路线,但是又想省机票费.他刚开始在城市1,必须K天都在这N个城市里跑来跑去,最后一天达到城市N,问怎样计划路线的得到最少的费用. 解题思路:一开始题目意思就理解有些问题. dp[k][i]:代表在第k天小偷从某一个城市(除了i)坐飞机飞到城市i(到达城市i也是在这一天).第k天的话,就看这一天坐哪个航班,加上之前的费用是最小的,就选这个方案.然后k+ 1天就又是由第k天推出来的. 状态转移方

uva live 4123 Glenbow Museum 数学递推

// uva live 4123 Glenbow Museum 数学递推 // // 题目大意: // // 对于一个边平行于坐标轴的多边形,我们可以用一个序列来描述,R和O,R表示 // 该顶点的角度为90度,O表示该定点的角度为270.给定序列的长度.问能由这些RO序 // 列组成的星型多边形(内部存在一个点可以看到所有的节点的多边形)的方法数有多少. // // 解题思路: // // 顶点数一定是序列的长度.n小于4无法组成多边形.n为奇数的时候也不行.设R的个数有 // x个,O的个数

UVA - 348Optimal Array Multiplication Sequence(递推)

题目:Optimal Array Multiplication Sequence 题目大意:给出N个矩阵相乘,求这些矩阵相乘乘法次数最少的顺序. 解题思路:矩阵相乘不满足交换率但满足结合率.dp[i][j] 代表第1个矩阵到第j个矩阵之间的最少的乘法次数,转移状态方程:dp[i][j] = Min(dp[i][k] + dp[k + 1][j]  + A[i - 1] * A[k] *A[j]) k>= i && k <= j - 1.A0A1A2A3..Ak  |  Ak+1

hdu4165(简单递推,实则卡特兰数的应用)

这道题之前自己做的时候并没有反应过来是求卡特兰数,当时是按递推来想的.后来查了下HDU4165,结果一看大标题就说是卡特兰数,自己想了想,还真是那么回事.主要还是对于卡特兰数用的不多,也就当时没立马反应过来了.下面介绍这道题我的思路,然后对卡特兰数再做一些补充. 本题题意:罐子里有N片相同的药片,开始的时候药片都是完整的一整片.然后一个每天从中任意取一片,如果该药片是完整的一整片,那么他会吃点半片,然后将剩余半片扔回罐里,如果恰好是半片,那他直接吃掉拿出来的半片.显然2N天后,他吃完全部N片药片

UVA - 12295 Optimal Symmetric Paths (递推)

Description  Optimal Symmetric Paths  You have a grid of n rows and n columns. Each of the unit squares contains a non-zero digit. You walk from the top-left square to the bottom-right square. Each step, you can move left, right, up or down to the ad

UVA 11427 - Expect the Expected(概率递推期望)

UVA 11427 - Expect the Expected 题目链接 题意:玩一个游戏,赢的概率p,一个晚上能玩n盘,如果n盘都没赢到总赢的盘数比例大于等于p,以后都不再玩了,如果有到p就结束 思路:递推,dp[i][j]表示玩i盘,赢j盘的概率,那么一个晚上玩了n盘小于p的概率递推式为: dp(i,j)=dp(i?1,j)?(1?p)+dp(i?1,j?1)?p 总和为Q=dp(n,0)+dp(n,1)+...+dp(n,x)(x/n<p) 那么每个晚上失败的概率Q就求出来了,那么平均玩的

uva 766 - Sum of powers(数学+递推)

题目连接:uva 766 - Sum of powers 题目大意:将Sk(n)=∑i=1nik化简成Sk(n)=ak+1nk+1+aknk+?+a0M 解题思路: 已知幂k,并且有(n+1)k=C(kk)nk+C(k?1k)nk?1+?+C(0k)n0结论. 所以令 (n+1)k+1?nk+1=C(kk+1)nk+C(k?1k+1)nk?1+?+C(0k+1)n0 nk+1?(n?1)k+1=C(kk+1)(n?1)k+C(k?1k+1)(n?1)k?1+?+C(0k+1)(n?1)0 - 2

hdu5306The mook jong(简单递推)

BC #50#简单递推 看了很多讲解的递推没有很懂,还好zzuspy思路简单清晰: f(n):要放n个木桩,先考虑最后一个板砖如果放的话,the last one的前两个并不能放木桩,所以前n-3个板砖如果放木桩的话有f(n-3)中方案,如果不放木桩的话,有一种方案: 最后一个板砖如果不放的话,是f(n-1)中方案: 所以f(n)=f(n-1)+f(n-3)+1; 还有一个hack点是爆Int的问题,但是比赛时并没有找到可以hack的代码T-T The mook jong Accepts: 50

(hdu step 3.1.3)母牛的故事(简单递推)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: 母牛的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 659 Accepted Submission(s): 481   Problem Descriptio