关于数值统计的几个算法

来源:互联网 发布:英雄联盟知乎 编辑:程序博客网 时间:2024/05/19 17:22

类别已经说明了,这是很基础的一些东西,具体如下:


由两大部分——求某一区间范围内的所有数值之和 +  求单个整数的各个位的数值之和/积。

//首三行目的:使各文件只能被编译一次#pragma once#ifndef Programming_Experience_CountingHelper_H#define Programming_Experience_CountingHelper_H//计算某一区间内的各数之和// 原先想直接用long long类型,但突然觉得可以泛型化的,两者都用。typedef long long LL;LL numberCounting(LL left, LL right) {LLtemp = 0;for (LL i = left; i <= right; ++i) {temp += i;}returntemp;}//单个数的各个位数的求和/乘积template <typename T>T numberCounting(T n,char ch) {Ttemp;switch (ch){case '*': {temp = 1;while (n) {temp *= (n % 10);n /= 10;}break;}case '+': {temp = 0;while (n) {temp += (n % 10);n /= 10;}break;}}returntemp;}#endif // ! Programming_Experience_CountingHelper_H

.h文件的设计只是为了方便测试数据,具体设计完全自由,变动很大。

//有关数字统计(十进制数)的一些算法设计//Created by Ant on 25/07/2017//#include <iostream>#include <cstdio>#include <cassert>#include "CountingHelper.h"using namespace std;intmain() {long long m, n;cin >> m >> n;assert(m <= n);printf("区间[%lld,%lld]上各数之和为:\t%lld\n", m, n, numberCounting(m, n));cout << m << "的各个位的数值之和为:\t" << numberCounting(m,'+') << endl;cout << n << "的各个位的数值之和为:\t" << numberCounting(n, '+') << endl;cout << m << "的各个位的数值的乘积为:\t" << numberCounting(m, '*') << endl;cout << n << "的各个位的数值的乘积为:\t" << numberCounting(n, '*') << endl;return 0;}


这是一个简单的测试样例的运行结果:





喂丸待续……


原创粉丝点击