不同进制间的转换
【问题描述】设计一个函数toOcr(int n),实现把输入的一个十进制数转换为八进制数
【输入形式】十进制数。
【输出形式】与之对应的八进制数。
【样例输入】126
【样例输出】176
【样例说明】直接输出数据,不要有其他输出语句,如需测试请使用cerr。
【评分标准】给出一个十进制数,正确输出八进制对应的数
#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值内的亲密对数
#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。
【输入形式】输入两个实参
【输出形式】对应位的数值
#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;
}