由键盘输入一个奇数 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.h> #include <iomanip.h> void main(void) { long p, a, b, c, t, n; while (1) { cout << "输入 p, 最后一位为 1 或 3 或 7 或 9:" << endl; 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; }