不同进制间的转换
【问题描述】设计一个函数toOcr(int n),实现把输入的一个十进制数转换为八进制数
【输入形式】十进制数。
【输出形式】与之对应的八进制数。
【样例输入】126
【样例输出】176
【样例说明】直接输出数据,不要有其他输出语句,如需测试请使用cerr。
【评分标准】给出一个十进制数,正确输出八进制对应的数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include<iostream> using namespace std; int toOcr(int num) { int temp,ii=1,ans=0; while(num) { temp = num%8; ans+=ii*temp; num/=8; ii*=10; } return ans; } int main() { int n; cin >> n; cout << toOcr(n); return 0; }
|
找出亲密对数
【问题描述】求数n之内的亲密对数。所谓“亲密对数”,即A的所有因子(包含1但不包含其本身)之和等于B,而B的所有因子之和等于A。
【输入形式】某个数字n。
【输出形式】此数字n之内的亲密对数。
【样例输入】400
【样例输出】220 284
【样例说明】输出结果每行输出一对亲密数,剔除重复的,按每行第一个数的大小排序。
【评分标准】 根据输入的N值,正确列举出N值内的亲密对数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include<iostream> using namespace std; int yinzi(int num) { int sum=0; for(int i=1;i<num;i++) { if(num%i==0)sum+=i; } return sum; } int main() { int n,a,b; cin >> n; for(int i=1;i<=n;i++) { a=i; b=yinzi(a); if(a==yinzi(b)&&a<b) cout << a << " "<< b << endl; } return 0; }
|
在给定的数中从右边查找第K位数字
【问题描述】设计一个函数int digit(long n,int k),它返回整数n从右边开始第k个数字的值,若不存在第k个数字则返回-1。
【输入形式】输入两个实参
【输出形式】对应位的数值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include<iostream> using namespace std;
int digit(long n,int k) { for(int i=1;i<=k-1;i++) { n/=10; if(n==0)return -1; } return n%10; } int main() { long a; int b; cin >> a >> b; cout << digit(a,b); return 0; }
|