关于数值统计的几个算法
2017-08-01 00:21
197 查看
类别已经说明了,这是很基础的一些东西,具体如下:
由两大部分——求某一区间范围内的所有数值之和 + 求单个整数的各个位的数值之和/积。
//首三行目的:使各文件只能被编译一次
#pragma once
#ifndef Programming_Experience_CountingHelper_H
#define Programming_Experience_CountingHelper_H
//计算某一区间内的各数之和
// 原先想直接用long long类型,但突然觉得可以泛型化的,两者都用。
typedef long long LL;
LL numberCounting(LL left, LL right) {
LL temp = 0;
for (LL i = left; i <= right; ++i) {
temp += i;
}
return temp;
}
//单个数的各个位数的求和/乘积
template <typename T>
T numberCounting(T n,char ch) {
T temp;
switch (ch){
case '*': {
temp = 1;
while (n) {
temp *= (n % 10);
n /= 10;
}
break;
}
case '+': {
temp = 0;
while (n) {
temp += (n % 10);
n /= 10;
}
break;
}
}
return temp;
}
#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;
int main() {
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;
}
这是一个简单的测试样例的运行结果:
喂丸待续……
由两大部分——求某一区间范围内的所有数值之和 + 求单个整数的各个位的数值之和/积。
//首三行目的:使各文件只能被编译一次
#pragma once
#ifndef Programming_Experience_CountingHelper_H
#define Programming_Experience_CountingHelper_H
//计算某一区间内的各数之和
// 原先想直接用long long类型,但突然觉得可以泛型化的,两者都用。
typedef long long LL;
LL numberCounting(LL left, LL right) {
LL temp = 0;
for (LL i = left; i <= right; ++i) {
temp += i;
}
return temp;
}
//单个数的各个位数的求和/乘积
template <typename T>
T numberCounting(T n,char ch) {
T temp;
switch (ch){
case '*': {
temp = 1;
while (n) {
temp *= (n % 10);
n /= 10;
}
break;
}
case '+': {
temp = 0;
while (n) {
temp += (n % 10);
n /= 10;
}
break;
}
}
return temp;
}
#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;
int main() {
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;
}
这是一个简单的测试样例的运行结果:
喂丸待续……
相关文章推荐
- 关于数值方法的一些算法解析(3)
- 几个关于串的小算法题:最小K个数、连续子数组的最大和、字符串全排列求法、数组循环移位
- 数组元素几个关于串的小算法题:最小K个数、连续子数组的最大和、字符串全排列求法、数组循环移位
- 关于一个算法题的想法:1000瓶汽水,每喝3瓶赚一瓶,最终喝了多少瓶,剩几个空瓶?
- 关于数据库索引设计的几个常用算法
- 关于动态规划的几个算法
- 关于递归的几个算法实现
- 关于用户行为统计算法尝试(java)
- 「算法精解_C语言描述」链表_关于链表特点的几个问与答
- 孩子兄弟存储结构的几个统计算法实现
- 关于遮挡剔除的几个算法尝试
- 关于字符串的几个算法
- 关于几个统计值以及matlab的算法
- 关于统计变换(CT/MCT/RMCT)算法的学习和实现
- MySql中关于某列中相同数值连续出现次数的统计
- 关于统计变换(CT/MCT/RMCT)算法的学习和实现
- 关于一个算法题的想法:1000瓶汽水,每喝3瓶赚一瓶,最终喝了多少瓶,剩几个空瓶?
- 关于digit统计算法(C语言实现)
- [算法基础]几个关于递归算法的练习题
- C++11新特性应用--介绍几个新增的便利算法(关于最大值和最小值的算法)