问题 3901 --特殊等式(完善程序)

3901: 特殊等式(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 362  解决: 216
[提交][状态][命题人:]

题目描述

由键盘输入一个奇数 P (P<100,000,000) ,其个位数字不是 5,求一个整数 S,使 P× S = 1111...1 ( 在给定的条件下,解 S 必存在 ) 。要求在屏幕上依次输出以下结果 :

 1) S 的全部数字。除最后一行外,每行输出 50 位数字。

 2) 乘积的数字位数。

例1:输入 p=13,由于 13*8547=111111 ,则应输出(1) 8547 ,(2) 6

例2:输入 p=147,则输出结果应为(1) 755857898715041572184429327286470143613,(2) 42,即等式的右端有 42个1。

#include <iostream>
#include <iomanip> 
using namespace std;
int main()
{	
	long p,a,b,c,t,n; 
	while (1)
	{	
		cin >>p;
		if ((p%2!=0)&&(p%5!=0)) //如果输入的数符合要求,结束循环
		______(1)_______;
	}
	a=0; n=0;
	while (a<p)
	{	
		a=a*10+1; n++; //变量 a存放部分右端项,	n为右端项的位数
	} 
	t=0;
	do
	{	
		b=a/p;
		cout <<setw(1)<<b; 
		t++;
		if (______(2)_____)
			cout <<endl;
		c=______(3)______; 
		a=______(4)______; 
		n++;
	} while (c>0);
	cout<<endl<<"n="<<_____(5)______<<endl;
}

输入

输出

样例输入
Copy
147
样例输出
Copy
755857898715041572184429327286470143613
n=42

提示

来源

[提交][状态]