Loading
NOIP2001提高組 一元三次方程求解
NOIP2002提高組 均分紙牌

NOIP2000提高組 進制轉換

Freddy posted @ 2011年10月09日 02:33 in NOIP with tags NOIP c++ , 2058 阅读

描述 Description

我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如,123可表示为1*10^2+2*10^1+3*10^0这样的形式。
与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式。一般说来,任何一个正整 数R或一个负整数-R都可以被选来作为一个数制系统的基数。如果是以R或-R为基数,则需要用到的数码为0,1,....R-1。例如,当R=7时,所需 用到的数码是0,1,2, 3,4,5和6,这与其是R或-R无关。如果作为基数的数绝对值超过10,则为了表示这些数码,通常使用英文字母来表示那些大于9的数码。例如对16进制 数来说,用A表示10,用B表示11,用C表示12,用D表示13,用E表示14,用F表示15。在负进制数中是用-R作为基数,例如-15(+进制)相 当于110001(-2进制),
并且它可以被表示为2的幂级数的和数:
110001=1*(-2)^5+1*(-2)^4+0*(-2)^3+0*(-2)^2+0*(-2)^1+1*(-2)^0
问题求解:
设计一个程序,读入一个十进制数的基数和一个负进制数的基数,并将此十进制数转换为此负进制下的数:-R∈{-2,-3,-4,....-20}

输入格式 Input Format

输入文件有若干行,每行有两个输入数据。
第一个是十进制数N(-32768<=N<=32767); 第二个是负进制数的基数-R。

输出格式 Output Format

输出此负进制数及其基数,若此基数超过10,则参照16进制的方式处理。【具体请参考样例】

样例输入 Sample Input

30000 -2
-20000 -7
28800 -16
-25000 -16

样例输出 Sample Output

30000=11011010101110000(base -2)
-20000=263526(base -7)
28800=19180(base -16)
-25000=7FB8(base -16)

 

【分析】

比較基礎的題,只要注意整除函數即可。

以下代碼是BYVoid(www.byvoid.com)大牛的:

#include <iostream>
#include <cstdio>
using namespace std;
int N,M,base;

inline int Div(int a,int b)
{
	int n;
	n=a/b;
	if (n*b<=a)
		return n;
	return n+1;
}

void work()
{
	int num[100];
	int top=0;
	if(N==0)
	{
		cout<<0;
	}
	int P;
	while (N)
	{
		P=Div(N,base);
		num[++top]=N-P*base;
		N=P;
	}
	for (;top>=1;top--)
	{
		if (num[top]<10)
			cout<<num[top];
		if (num[top]>=10)
			cout<<(char)(num[top]-10+'A');
	}
		cout<<"(base "<<base<<")"<<endl;
}

int main()
{
	freopen("fjz.in","r",stdin);
	freopen("fjz.out","w",stdout);
	while(cin>>N)
	{
		cin>>base;
		M=N;
		cout<<N<<"=";
		work();
	}
	return 0;
}

 

 

正在连接评测机...

 

已连接到评测机

GRID 1
名称 Flitty
系统版本 1.00
备注 COGS 1号评测机 Flitty

正在编译...

编译成功

 

测试点 结果 得分 运行时间 内存使用 退出代码
1 正确 10 0.000 s 273 KB 0
2 正确 10 0.000 s 273 KB 0
3 正确 10 0.000 s 273 KB 0
4 正确 10 0.000 s 273 KB 0
5 正确 10 0.000 s 273 KB 0
6 正确 10 0.000 s 273 KB 0
7 正确 10 0.000 s 273 KB 0
8 正确 10 0.000 s 273 KB 0
9 正确 10 0.000 s 273 KB 0
10 正确 10 0.000 s 273 KB 0

运行完成

运行时间 0.003 s

平均内存使用 273 KB

测试点通过状况 AAAAAAAAAA

得分:100

恭喜你通过了全部测试点!

 

Amy Abbott 说:
2019年10月10日 20:04

The European Association of Remote Sensing Laboratories spend significant time in the serene uses of remote detecting ashore, ocean, and air. Professional Dissertation Writers UK have proportional enrollment concurrences with different social orders, for example, the Remote Sensing Society in the UK


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter