求N的倍数M都是各位0和1
函数篇
问题描述:
明明的爸爸在研究一个复杂的数学问题,研究了很长时间都没有结果。明明看见后就问爸爸在研究什么。明明的爸爸回答说:“我在研究一个整数的倍数问题,想找到某个数的倍数……”明明还没有等他爸爸说完,就抢着说:“这不是很简单嘛,你把这个整数乘以1,乘以2,……,就能得到很多的倍数呀。”明明的爸爸当然知道这种方法,但是他接着说:“这样的方法找倍数当然容易,但是我找的倍数有一个特点,那个倍数只能由0或1组成,且应该尽量的小。例如一个自然数2,它符合要求的那个倍数就是10。”这下明明明白为什么爸爸研究了那么多时间都还没有研究出结果了,因为随着数字的增大,找到它的符合要求的倍数越来越难。明明想帮他爸爸解决这个问题,于是他来求助于你,能否帮他爸爸写一个程序,来求一个整数的倍数,倍数仅有0或1组成,且要尽可能小。 明明的问题可以归结为:任意给定一个自然数N,寻找一个M,要求M是N的倍数,且它的所有各位数字都是由0或1组成,并要求M尽可能小。
输入说明:
你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行仅包括一个正整数N(1≤N≤100),代表要求倍数的那个整数。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。
输出说明:
对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个整数,即N的倍数M。每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。 注:通常,显示屏为标准输出设备。
代码如下
#include
#include
#include
using namespace std;
void bei(int n);//定义函数
int main()
{int n;while(scanf("%d",&n)!=EOF){bei(n);if(cin.eof());//确保会每次都会换行 最后一行数据后没有空行elseprintf("\n");}return 0;}void bei(int n)
{
int z=n;
int flag=0;for(int i=1;; i++){n=z;n*=i;int x=n;while(n!=0){if(n%10==1||n%10==0){flag=1;}else{flag=0;break;}n/=10;}if(flag==1){printf("%d",x);break;}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
