进制转换
题目描述
将M进制的数X转换为N进制的数输出。
输入描述:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出描述:
输出X的N进制表示的数。
在这里插入代码片
#include<stack>
#include<cstring>
#include<math.h>
using namespace std;
int toint(char x){
//将字符转化为整数
if(x<='9'&&x>='0')return x-'0';
else return x-'A'+10;
}
char tochar(int x){
if(x<10)return x+'0';
else return x-10+'A';
}
int main(){
//将m进制的数转化成n进制的
int n,m;
cin>>m>>n;
string x;
cin>>x;
long long sum=0;
for(int i=x.size()-1,j=0;i>=0;i--,j++){
//将x转化为十进制数
sum=sum+pow(m,j)*toint(x[i]);
}
stack<char>mystack;
while(sum>0){
//将十进制转化为n进制
mystack.push(tochar(sum%n));
sum/=n;
}
while(!mystack.empty()){
cout<<mystack.top();
mystack.pop();
}
}
最大公约数
题目描述
读入n个正整数,求出这n个数的最小值、最大值以及它们两的最大公约数,并输出。输入中第一行为n,接下来为n个大于零的整数。
输入描述:
第一行为n。第二行是n个大于零的整数,用空格隔开。
输出描述:
分别输出最小值、最大值和它们两的最大公约数,用空格隔开。
#include <iostream>
#include<algorithm>
using namespace std;
int GCD(int a,int b){
if(b==0)return a;
else return GCD(b,a%b);
}
int main()
{
int n;
while(cin>>n){
int *a=new int[n],max,min;
for(int i=0;i<n;i++){
cin>>a[i];
if(i==0)
max=min=a[0];
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
}
cout<<min<<" "<<max<<" "<<GCD(max,min)<<endl;
}
}
素数筛数法
题目描述
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
输入描述:
输入有多组数据。
每组一行,输入n。
输出描述:
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
#include <iostream>
#include<vector>
using namespace std;
const int maxn=10001;
bool num[maxn];
vector<int>prime;
void issushu(){
for(int i=0;i<=maxn;i++){
num[i]=true;
}
num[0]=false;
num[1]=false;
for(int i=2;i<=maxn;i++){
if(num[i]==false)continue;
prime.push_back(i);
for(int j=i*i;j<maxn;j=j+i){
num[j]=false;
}
}
return;
}
int main()
{
int n;
issushu();
while(cin>>n){
bool isout=false;
for(int i=0;i<prime.size()&&prime[i]<n;i++){
if(prime[i]%10==1){
isout=true;
cout<<prime[i]<<" ";
}
}
if(!isout)cout<<"-1";
cout<<endl;
}
}
高精度整数
import java.lang.reflect.Array;
import java.util.Arrays;
import java.math.*;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
int k, t;
k = cin.nextInt();
t = cin.nextInt();
while((k--) != 0){
BigDecimal m, n;
m = cin.nextBigDecimal();
n = cin.nextBigDecimal();
System.out.println(m.add(n));//加
System.out.println(m.subtract(n));//减
System.out.println(m.divide(n));//除不尽且未设置精度时会异常
System.out.println(m.divideToIntegralValue(n));//除,并取整
System.out.println(m.ulp());//末位精度
System.out.println(m.multiply(n));//乘
System.out.println(m.pow(t));//t次方
System.out.println(m.remainder(n));//取余
if(m.compareTo(n) > 0) System.out.println("m > n");//比大小
System.out.println(m.abs()); // 绝对值
System.out.println(m.negate());//相反数
}
}
}