Sum of numbers from 0 to N -- 7 kyu

来源:互联网 发布:python 量化投资书籍 编辑:程序博客网 时间:2024/05/20 00:35

原题

https://www.codewars.com/kata/56e9e4f516bcaa8d4f001763/train/cpp

题目

Description:

We want to generate a function that computes the series starting from 0 and ending until the given number following the sequence:

0 1 3 6 10 15 21 28 36 45 55 ….

which is created by

0, 0+1, 0+1+2, 0+1+2+3, 0+1+2+3+4, 0+1+2+3+4+5, 0+1+2+3+4+5+6, 0+1+2+3+4+5+6+7 etc..
Example:

Input:6
Output : 0+1+2+3+4+5+6 = 21

Input : -15
Output : -15<0

Input : 0
Output : 0=0

分析

  1. 输入数值当大于0时,输出从0到输入数值的累加的字符串;
  2. 输入数值当小于0时,输出该数<0;
  3. 输入数值为0时,输出0=0;

代码

using namespace std;class SequenceSum{  int count;  public:  SequenceSum (int);  string showSequence();};string SequenceSum::showSequence(){    string res;  int sum(0);  stringstream s_sum;  if(count < 0){    s_sum<<count;    res = string(s_sum.str())+string("<0");    return res;  }  if(count == 0){    res= string("0=0");    return res;  }    for(size_t i = 0; i <= count ;i++){        stringstream s_plus;            s_plus<<i;      cout << s_plus.str() <<endl;            sum +=i;            res += string(s_plus.str())+string("+");  }  res.pop_back();  s_sum<<sum;  res += string(" = ") + string(s_sum.str());  return res;}SequenceSum::SequenceSum (int c) {  count = c;}

参考代码

using namespace std; class SequenceSum{ int count; public: SequenceSum (int); string showSequence(); }; string SequenceSum::showSequence(){ if(0 == count) return "0=0"; if(0 > count) return to_string(count) + "<0"; ostringstream oss; for(size_t i=0;i<=count;i++){ oss << i; if(i!=count) oss <<"+"; else oss << " = " << (count*(count+1)>>1); } return oss.str(); } SequenceSum::SequenceSum (int c) { count = c; }//  单独数字转字符串可使用to_string() (C++11)//  多个数字转字符串可使用ostringstream//  多个数字有序数列求和,可用高斯求和公式n*(n+1)/2//作者:jdzhangxin//链接:http://www.jianshu.com/p/5bde637c3bd9//來源:简书//著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。