同码小数和(重要)
设和式s(d,n)=0.d+0.dd+0.dd+…+0.dd…d 为n项同码d小数之和,其中第k项小数点后有连
续k个数字d(d=1,2,…,9)。
例如:
s(7,4)=0.7+0.77+0.777+0.7777
输入整数d,n(1≤d≤9,1<n<300),计算并输出同码小数和s(d,n)(四舍五入精确到小数点后8位)。
1.设计要点
设置双精度实变量s实施累加求和
设置j(1~n)循环枚举和式的每一项,设前项小数为t,则当前项显然应为:
t=t/10+d/10
根据这一送代式,在循环中把每一项t累加到和变量s即可。
代码:
#include <stdio.h>
int main() {
int n, d;
double t, s;
scanf("%d %d", &d, &n);
t = s = 0.0;
for (int i = 1; i <= n; i++) {
t = t / 10 + (double)d / 10;
s += t;
}
printf("%lf\n", s);
return 0;
}
.省略循环设计求解
事实上,求同码小数和可省略循环求解
设s(n=09+0.99+.10.99.9=n-0.1111取至小数点后9位),则s(d,n)=s(9,n)9*d
代码:
#include<stdio.h>
int main()
{
int n,d;
double s,t;
scanf("%d %d",&d,&n);
s=(n-0.111111111)*d/9;//核心
printf("%lf\n",s);
return 0;
}