第16周-求Sn=a+aa+aaa+…+aa…aaa(有n個a)之值


問題及代碼:

/* 
*Copyright (c)2014,煙台大學計算機與控制工程學院
*All rights reserved.
*文件名稱:add.cpp
*作 者:單昕昕
*完成日期:2014年12月12日
*版 本 號:v1.0
*
*問題描述:求Sn=a+aa+aaa+…+aa…aaa(有n個a)之值,其中a是一個數字(1<=a<=9)。例如:2+22+222+2222+22222(a=2,n=5),a和n由鍵盤輸入。
*程序輸入:a、n。
*程序輸出:S。
*/
#include <iostream>
#include <cmath>
using namespace std;
int main( )
{
int a,n,s=0,m,i,d[100],sum=0;
cin>>a>>n;
for(i=0; i<n; ++i)
{
m=pow(10,i);
s+=a*m;
d[i]=s;
}
for(i=0; i<n; ++i)
sum+=d[i];
cout<<sum;
return 0;
}

運行結果:

——————————————————理論結果

——————————————————實際輸出

————————————————這是為什么呢!?!?

————————————————單步一下吧!!!



————————————————有木有!!!10的平方變成了99哦!!!

————————————————不要驚訝!!這是編譯器的問題,我就這個代碼提交了,還是AC了!O(∩_∩)O哈哈~

知識點總結:

求Sn=a+aa+aaa+…+aa…aaa(有n個a)之值。

可以用pow函數。但是這個函數針對的是double,100會被近似成99.999999.......

所以請慎用。


學習心得:

一開始以為是我的程序問題,也不敢提交,后來單步了才發現問題。

單步執行是很重要的技能哦~~


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com