用pascal 一个正整数的个位数字是6,如果把个位数字移到首位,所得到的数是原数的4倍,试编程 5
1个回答
展开全部
1、设原数x位数为n,形为:x = ????6 = ????0 + 6
移位后得到:4x = 6???? = 60000 + ???? = 6*10^(n - 1) + ????
= 6*10^(n - 1) + (x - 6) / 10
两边同乘10,得到:40x = 6*10^n + x - 6
简化可得:39x = 6*10^n - 6,题目转化为等式右边能否被39整除的问题。
2、程序如下
program Project1;
// Pascal没有幂函数,自己写
function Power(X, I: Word): Int64;
begin
Result := 1;
while I > 0 do
begin
Result := Result * X;
Dec(I);
end;
end;
var
x, y: Int64;
n: Integer;
begin
// Int64类型表示为10进制最多19位
for n := 1 to 19 do
begin
y := 6 * Power(10, n) - 6;
x := y div 39;
if x * 39 = y then
Writeln(x);
end;
Readln;
end.
移位后得到:4x = 6???? = 60000 + ???? = 6*10^(n - 1) + ????
= 6*10^(n - 1) + (x - 6) / 10
两边同乘10,得到:40x = 6*10^n + x - 6
简化可得:39x = 6*10^n - 6,题目转化为等式右边能否被39整除的问题。
2、程序如下
program Project1;
// Pascal没有幂函数,自己写
function Power(X, I: Word): Int64;
begin
Result := 1;
while I > 0 do
begin
Result := Result * X;
Dec(I);
end;
end;
var
x, y: Int64;
n: Integer;
begin
// Int64类型表示为10进制最多19位
for n := 1 to 19 do
begin
y := 6 * Power(10, n) - 6;
x := y div 39;
if x * 39 = y then
Writeln(x);
end;
Readln;
end.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询