while循环第二阶段作业

1244 - 请问一个正整数能够整除几次

题目描述 请问一个正整数n能够整除几次2? 比如:4可以整除2次2,100可以整除2次2,9可以整除0次2。 输入 从键盘读入一个正整数n 输出 输出一个整数,代表n能够整除2的次数 样例 输入复制 8 输出复制
#include<iostream>
using namespace std;
int main()
{
	int n;
	int i = 2;
	int sum = 0;
	cin>>n;
	while(i<=n)
	{
		if(n%i == 0)
		{
			sum = sum+i;
		}
		i = i/2;
	}
	cout<<sum<<endl;
	return 0;
#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int sum = 0;
	while(n%2 == 0)
	{
		n = n/2;
		sum++;
	}
	cout<<sum;
	return 0;

1062 - 求落地次数

题目描述 小球从100米高处自由落下,着地后又弹回高度的一半再落下。经过多少次落地后,小球弹起的高度才 会低于0.5米? 输入 无 输出 一行,一个整数。
#include<iostream>
using namespace std;
int main()
{
	int i = 100,sum = 0;
	while(i>=0.5)
	{
	    sum = sum + i;
	    i = i/2;
	    i++;
        cout<<sum;
	}
	return 0;
}
#include<iostream>
using namespace std;
int main()
{
	int n;
	int sum = 0;
	while(n>=0.5)
	{
	    n = n/2;
	    sum++;  
	}
	cout<<sum;
	return 0;
}

1254 - 求车速

题目描述 一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称 数(即这个数从左向右读 和从右向左读是完全一样的),为95859。两小时后里程表上 出现了一个新的对称数。问该车的速度是多 少?新的对称数是多少? 输入 无 输出 输出两行,第一行是车速,第二行是新的里程数(两个都是整数)
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{   
    int n = 95859;
    int n2 = 95859;
    while(true)
    {
    	n++;
    	int g = n%10;
    	int s = n/10%10;
    	int q = n/1000%10;
    	int w = n/10000%10;
    	if(w==g&&q==s)
    	{
    		break;
    	}
    }
    cout<<n<<endl;
    cout<<(n-n2)/2<<endl;
   return 0;
 
}

1261 - 韩信点兵

题目描述 韩信有一对士兵,他想知道有多少人,他就让士兵报数,如果按照1到5报数,最末一个士兵报的数为 1;按照1到6报数,最末一个士兵报的数为5;按照1到7报数,最末一个士兵报的数为4;最后再按1到 11报数,最末一个士兵报的数为10,请问韩信这队士兵最少有多少人? 输入 无  输出 输出这队士兵最少有多少人
#include<iostream>
using namespace std;
int main()
{
	int n;
	int sum = 0;
	while(n<=sum)
	{
        if(n%6 == 5&&n%5 == 1&&n%7 == 4&&n%11 == 10)
        {
        	 sum++;
        }      
	} 
	cout<<n;   
   	return 0;
}

改 

#include<iostream>
using namespace std;
int main()
{
	
	int i = 1;
	while(true)
	{
        if(i%6 == 5&&i%5 == 1&&i%7 == 4&&i%11 == 10)
        {
        	 break;
        }      
	} 
	cout<<i;   
   	return 0;
}

1263 - 8 除不尽的数

题目描述 一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。又知 这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。求满足条件的最小的这个自 然数。 输入 无 输出 一个自然数
#include<iostream>
using namespace std;
int main()
{
	int n;
	int sum = 0;
	while(n<=sum)
	{
		if((n%8%8 == 7)&&(n%17%17 == 15) == n*2)
		{
			sum++;
		}
	}
	cout<<sum;
	return 0;

1265 - 爱因斯坦的数学题

题目描述 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最 后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不 剩。请问这条阶梯最少共有多少阶? 输入 无 输出 这条阶梯最少的阶
#include<iostream>
using namespace std;
int main()
{
	int n;
	int sum = 0;
	while(n<=sum)
	{
		if(n%2 == 1&&n%3 ==  2&&n%5 == 4&&n%6 == 5&&n%7 == 0)
		{
			sum++;
		}
	}
	cout<<n;
	return 0;

1078 - 求恰好使s=1+1/2+1/3+…+1/n的值大于X时n的值。

题目描述 求恰好使s=1+1/2+1/3+…+1/n的值大于X时n的值。(2<=x<=10) 输入 输入只有一行,包括1个整数X。 输出 输出只有一行(这意味着末尾有一个回车符号),包括1个整数。 样例 输入复制2   输出复制  4

1241 - 角谷猜想

题目描述 日本一位中学生发现一个奇妙的定理,请角谷教授证明,而教授无能为力,于是产生了角谷猜想。猜想 的内容:任给一个自然数,若为偶数则除以2,若为奇数则乘3加1,得到一个新的自然数后按上面的法 则继续演算。若干次后得到的结果必为1。
请编写代码验证该猜想:求经过多少次运算可得到自然数1。
如:输入22,则计算过程为。
22/2=11
11×3+1=34
34/2=17
17×3+1=52
52/2=26
26/2=13
13×3+1=40
40/2=20
20/2=10
10/2=5
5×3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
经过15次运算得到自然数1。
输入 一行,一个正整数n。(1 <= n <= 20000 ) 输出 一行,一个整数,表示得到1所用的运算次数。
样例 输入复制  22 输出复制15
#include<iostream>
using namespace std;
int main()
{
	int n,i = 1;
	cin>>n;
	while(n%i == 0)
	{
		if(n%2 == 0)
		{
			cout<<n/2;
		}
		else
		{
			cout<<n*3+1;
		}
	        i = i/2;
	}
	return 0;

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{      


    int n;
    cin>>n;
    int cnt =0;
    while(n!=1)
    {
    	if(n%2==0)
    	{
    		n=n/2;
    	}
    	else
    	{
    		n=n*3+1;
    	}
    	cnt++;
    }
    cout<<cnt;
   return 0;
 
}

 

1460 - 小明学游泳

题目描述 小明开心的在游泳,可是他很快难过的发现,自己的力气不够,游泳好累哦。已知小明每换一次气能游2 米,可是随着越来越累,力气越来越小,他接下来的每换一次气都只能游出上一步距离的98%。现在小 明想知道,如果要游到距离x米的地方,他需要总共换多少次气呢。请你编程解决这个问题。
输入 输入一个数字(不一定是整数,小于100m),表示要游的目标距离。
输出 输出一个整数,表示小明一共需要换多少次气。 样例 输入4.3  复制 输出复制3
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	float n;
	float i = 0.98;
	cin>>n;
	while(n^0.98)
	{
		if(2%i == 0)
		{
			cout<<n;
		}
	}
	return 0;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值