牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。 变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80. 问题是,要做多少次变换,使得这个数变成个位数。

牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。
变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80.
问题是,要做多少次变换,使得这个数变成个位数。

输入描述:
输入一个整数。小于等于2,000,000,000。

输出描述:

输出一个整数,表示变换次数。

输入例子:

285

输出例子:

2

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3  int main()
 4  {
 5      int n;
 6      scanf("%d",&n);
 7      if(n==0)//n是0,输出 0次
 8      printf("0");
 9      else
10      {
11          int result = 1;
12          int count = 0;
13
14          while(n/10)//n是个位数,输出0次
15          {
16              while(n)
17              {
18                  result *= n%10;
19                  n = n/10;
20              }
21              printf("%d\n",result);//输出每个数字相乘的积,作为新的n,本题中不需要此行的输出
22              count++;
23              n = result;
24              result = 1;
25          }
26
27          printf("%d",count);
28      }
29      return 0;
30  }

 

时间: 2024-08-06 15:41:33

牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。 变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80. 问题是,要做多少次变换,使得这个数变成个位数。的相关文章

二、给定一个 n 行 m 列的地牢,其中 &#39;.&#39; 表示可以通行的位置,&#39;X&#39; 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。

给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上.地牢的出口可能在任意某个可以通行的位置上.牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢. 个输入包含 1 个测试用例.每个测试用例的第一行包含两个整数 n 和 m(1 <= n, m <= 50),表示地牢的长和宽.接下来的

程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。

用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ FILE*fp1,*fp2; char ch; int da=0,xiao=0,shuzi=0,qita=0; if((fp1=fopen("sr

18.n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。 当一个数字删除后,从被删除数字的下一个继续删除第m个数字。 求出在这个圆圈中剩下的最后一个数字。

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4263868.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字). 当一个数字

做产品经理n年后,我只悟出这一个道理...

推送这篇文章之前,我想了好几个标题,比如说 想做好产品经理,只需这一招... 这就是你日日夜夜想要的,做好产品的奥秘竟然是... (非)著名产品经理孙中明的产品心得 做一个人人都用的产品是怎样的体验?有图有真相 产品人必须看的一篇文章,看完惊呆了 天啊!产品圈传疯了!不看不是人,只给你最干最干的干货 以上题目我分别使用了数字式.挖坑式.名人式(如果我有张小龙般地位的话).假装事实式.道德绑架+恐吓强调式的套路,在这里我只想强调一点:我有n种套路来赢得你的注意力,ta们(各种媒体们)有更多.但是这

ghost台式电脑后只剩下一个盘的数据解决法子

GHOST后只剩C盘是因为在安装系统时,选择了错误的选项导致把整个硬盘当成C盘来装,装完之后自然就只剩下C盘.想要恢复丢失盘的资料,需要注意,别往现在的这个C盘存入新的文件(因为现在存入的文件可能会覆盖原先DEF盘的资料).可以把硬盘拆下来挂到别的电脑当副盘或者接个移动硬盘,把数据恢复到移动硬盘里.具体的恢复方法看下文了解. 工具/软件:流星数据恢复软件 步骤1:先下载并解压程序运行后,直接双击需要恢复的分区,接着右击软件图标选择<以管理员身份运行>(如果是xp系统可以直接双击打开软件).步骤

C语言:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。

//fun函数:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动. 1 #include <stdio.h> 2 void fun( char *p ) 3 { char max,*q; int i=0; 4 max=p[i]; 5 while( p[i]!=0 ) 6 { if( max<p[i] ) 7 { max=p[i]; 8 /**********found**********/ 9 q = p + i;//先找到最大值,记录最

重装组装电脑后只剩下一个盘别的盘的资料怎样恢复

问题描述:重装系统分区合并是因为在重新安装系统时,选择了错误的选项导致把整个硬盘当成C盘来装,装完之后自然就只剩下C盘.想要恢复丢失盘的资料,需要注意,别往现在的这个C盘存入新的文件(因为现在存入的文件可能会覆盖原先DEF盘的资料).可以把硬盘拆下来挂到别的电脑当从盘或者接个移动硬盘,把数据恢复到移动硬盘里.具体的恢复方法看下文了解.工具/软件:极限数据恢复软件 步骤1:先下载并解压软件打开后,直接双击需要恢复的磁盘步骤2:等待软件扫描完毕一般需要几分钟到半个小时.步骤3:程序会很快将扫描到的文

24、输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.  思路:新建一个数组先把原数组中的奇数push进去再把偶数push进去,然后用新数组数据覆盖原数组即可 复杂度O(n),用空间换时间 class Solution { public:     void reOrderArray(vector<int> &array) {         vector<int&

将数值四舍五入(保留2位小数)后格式化成金额形式

/** * 将数值四舍五入(保留2位小数)后格式化成金额形式 * * @param num 数值(Number或者String) * @return 金额格式的字符串,如'1,234,567.45' * @type String */function formatCurrency(num) { num = num.toString().replace(/\$|\,/g,''); if(isNaN(num)) num = "0"; sign = (num == (num = Math.a