求十进制数n的 2至 n-1进制的表达
来源:互联网 发布:windows禁止启动程序 编辑:程序博客网 时间:2024/06/03 14:26
/*假设数为num, 进制为n */
vector<int> transform(int num, int n)
{
vector<int> list;
while (num != 0)
{
int a = num % n;
num = num / n;
list.push_back(a);
}
return list;
}
例如:123 123%10 = 3, 123 / 10 = 12 ; 12%10=2, 12 / 10 = 2; 2%10 = 2, 2/10=0; 所以得到 3,2,1;别的进制依此而行;
改进题目1:
/*
尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题,现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示为三位数1、7、3,按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11,。 小B感兴趣的是,一个数A如果按2到A-1进制表达时,各个位数之和的均值是多少?她希望你能帮她解决这个问题? 所有的计算均基于十进制进行,结果也用十进制表示为不可约简的分数形式。
*/
#include<iostream>#include<vector>#include<algorithm>using namespace std;int transform(int num, int n){vector<int> list;int sum = 0;while (num != 0){int a = num % n;num = num / n;list.push_back(a);}for (int i = 0; i < list.size(); i++){sum += list[i];}return sum;}int gcd(int m, int n){int r = m % n;while (r != 0){m = n;n = r;r = m % n;}return n;}int main_04(){int A;while (cin >> A){int sum = 0, div = A - 2;for (int i = 2; i < A; i++){sum += transform(A, i);}cout << sum / gcd(sum, div) << "/" << div / gcd(sum, div) << endl;}return 0;}
/*
小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,
而在计算机中,二进制数也很常用。现在对于一个数字x,小明同学定义出了两个函数f(x)和g(x)。 f(x)表示把x这个数用
十进制写出后各个数位上的数字之和。如f(123)=1+2+3=6。 g(x)表示把x这个数用二进制写出后各个数位上的数字之和。
如123的二进制表示为1111011,那么,g(123)=1+1+1+1+0+1+1=6。 小明同学发现对于一些正整数x满足f(x)=g(x),他
把这种数称为幸运数,现在他想知道,小于等于n的幸运数有多少个?
*/
#include<iostream>#include<vector>#include<algorithm>using namespace std;int f(int num, int n){vector<int> list;int sum = 0;while (num != 0){int a = num % n;num = num / n;list.push_back(a);}for (int i = 0; i < list.size(); i++){sum += list[i];}return sum;}int main_05(){int A;while (cin >> A){int count = 0;for (int i = 1; i <= A; i++){if (f(i, 10) == f(i, 2)){//cout <<i<<" "<< f(i, 10) //<<" "<< f(i, 2) << endl;count++;}}cout << count << endl;}return 0;}
- 求十进制数n的 2至 n-1进制的表达
- 从键盘输入N个十进制数,求它们的和
- 求1-N中十进制正整数1的个数
- 求1-n位数的所有数
- 求n数的最小公倍数
- 十进制到n进制的转换
- 十进制转N进制的实现
- 1-n中十进制数中1出现的次数
- 将十进制数N转换为r进制的数
- 求1到n这n个整数的十进制表示中1出现的次数
- poj 3286 求一个区间十进制数的0的个数的和(附:0~N十进制表示1的个数和)
- 把十进制的n转化成r进制的数的模板
- 算法题31 输出1到N位的十进制数,N可能很大。
- 输入数字n,顺序打印出1到n位的十进制最大数
- 输入数字n,按顺序打印出从1到最大的n位十进制数
- 输入数字n,按顺序打印出从1到最大的n位十进制数
- 将一个M进制的数N转换成十进制表示的式子。
- 摩尔投票法, O(n) O(1) 求出现次数大于n/2,n/3次数的数
- Hadoop之本地运行模式详解
- 用SSD训练自己的数据集
- 编译ffmpge
- Anaconda的安装与配置
- u-boot之ldr pc _start_armboot 解析
- 求十进制数n的 2至 n-1进制的表达
- frame搭建后台管理系统(点击左侧,右侧内容以选项卡方式出现)
- orcale 执行计划
- QT,QVector 基本用法,遍历[实例讲解]
- IDEA的查询引用、调用关系图的功能
- ionic使用(三):下拉刷新显示新闻
- 141 Linked List Cycle
- Please change caller according to com.intellij.openapi.project.IndexNotReadyException documentation
- 变量