ACMICPC南太平洋赛区试题解析1Word格式.docx

上传人:b****7 文档编号:22570767 上传时间:2023-02-04 格式:DOCX 页数:7 大小:17.04KB
下载 相关 举报
ACMICPC南太平洋赛区试题解析1Word格式.docx_第1页
第1页 / 共7页
ACMICPC南太平洋赛区试题解析1Word格式.docx_第2页
第2页 / 共7页
ACMICPC南太平洋赛区试题解析1Word格式.docx_第3页
第3页 / 共7页
ACMICPC南太平洋赛区试题解析1Word格式.docx_第4页
第4页 / 共7页
ACMICPC南太平洋赛区试题解析1Word格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

ACMICPC南太平洋赛区试题解析1Word格式.docx

《ACMICPC南太平洋赛区试题解析1Word格式.docx》由会员分享,可在线阅读,更多相关《ACMICPC南太平洋赛区试题解析1Word格式.docx(7页珍藏版)》请在冰豆网上搜索。

ACMICPC南太平洋赛区试题解析1Word格式.docx

valuetoitsright,asinthefollowingexamples:

)@%is1*62+3*6+0=36+18+0=54

$~~is4*63+(–1)*62+2*6+2=864–36+12+2=842

$~~is(–1)*62+2*6+2=–36+12+2=-22

YourtaskistotakeWacmiannumbersandrepresentthemasstandardbase10

numbers.

P1-ACMSPPC2of2Saturday,20/09/2003

INPUTFORMAT

InputconsistsofWacmiannumbers,oneperline.Eachnumberconsistsofa

sequenceof1to10Wacmiandigits.Asingle‘#’onalinebyitselfindicatesthe

endofinput.

SAMPLEINPUT:

)@%

$~~

%

#

OUTPUTFORMAT

Outputwillbethecorrespondingdecimalnumbers,oneperline.

SAMPLEOUTPUT:

54

842

-22

0

这里我们提供出来本题的中文对照:

Wacmian数字

在假设的Wacmahara无人沙漠里,一个非普通人组成的部落被发现了。

Wacmians的每个手上仅有两个手指和一个拇指,并且他们发明了自己的数字系统。

他们使用的数字和用来表示数字的符号都很奇特,但是人类学家已经能够以用下面的方法描述它们:

%--0

)--1

~--2

@--3

--4

\--5

$---1(没错,他们甚至有负数)

如你所愿,他们的系统是以6为基础的,每位上的数值达到6就像该位的左边进位,如同随后的例子:

)@%表示1*6^2+3*6+0=36+18+0=54

$~~表示4*6^3+(-1)*6^2+2*6+2=864-36+12+2=842

$~~表示(-1)*6^2+2*6+2=-36+12+2=-22

你的任务是把Wacmian数字解释成标准的10进制数字。

输入格式

输入包括Wacmian数字,每行一个。

每个数字由1至10个有顺序的Wacmian数字组成。

一个单独的#占用一行,它标志输入结束。

输入举例:

输出格式

输出相应的是进制数字,每行一个。

输出举例:

本题的解答如下:

#include<

stdio.h>

io.h>

intGetData(int*digit,FILE*fp)

{

chartemp;

inti=0;

//使用temp记录从input.in文件中逐个读出的字符

temp=fgetc(fp);

//如果为回车符,表示该数的读取已经结束了

while(temp!

='

\n'

switch(temp)

case'

%'

:

digit[i]=0;

break;

)'

digit[i]=1;

~'

digit[i]=2;

@'

digit[i]=3;

'

digit[i]=4;

/'

digit[i]=5;

$'

digit[i]=-1;

#'

return-1;

//让函数返回-1表示input.in文件结束

}

//digit[10]用来统计数中的位数

digit[10]=i+1;

i++;

//数组下标增加1

//读入下一个字符

return0;

voidmain()

//题目中给每个数最多只有10位

//所以数组定义11位

//前10位保存每位的数字

//最后一位统计位数

intdigit[11];

longnumber=0;

//考虑到极值状况,采用long类型

longtemp=1;

inti,j;

FILE*fpInput,*fpOutput;

fpInput=fopen("

input.in"

"

r"

);

fpOutput=fopen("

output.out"

w"

digit[10]=0;

while(GetData(digit,fpInput)!

=-1)

for(i=0;

i<

digit[10];

i++)

for(j=0;

j<

digit[10]-i-1;

j++)temp*=6;

number+=(digit[i]*temp);

temp=1;

//将每一位转换成10进制后都需要为temp初始化

//以便下一位的转换时使用

fprintf(fpOutput,"

%ld\n"

number);

number=0;

//每个数字转换完成后number同样需要重新初始化

fclose(fpInput);

fclose(fpOutput);

}

FeedBack:

#2003年ACM-ICPC南太平洋赛区试题解析-1

2004-09-1316:

43|lili

#include 

<

 

int 

GetData(int 

*digit,FILE 

*fp) 

char 

temp;

i=0;

//使用temp记录从input.in文件中逐个读出的字符 

temp 

fgetc(fp);

//如果为回车符,表示该数的读取已经结束了 

while(temp 

!

) 

switch 

(temp) 

case 

digit[i] 

0;

1;

2;

3;

4;

5;

-1;

return 

// 

让函数返回 

-1 

表示input.in文件结束 

//digit[10]用来统计数中的位数 

digit[10] 

i+1;

//数组下标增加 

//读入下一个字符 

void 

main() 

//题目中给每个数最多只有10位 

//所以数组定义11位 

//前10位保存每位的数字 

//最后一位统计位数 

digit[11];

long 

number 

//考虑到极值状况,采用long类型 

i,j;

FILE 

*fpInput,*fpOutput;

fpInput 

fopen( 

"

fpOutput 

fopen("

while(GetData(digit,fpInput) 

-1) 

i<

i++) 

j<

j++) 

*= 

6;

+= 

(digit[i]*temp);

//将每一位转换成10进制后都需要为temp初始化 

//以便下一位的转换时使用 

//每个数字转换完成后number同样需要重新初始化 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1