ACMICPC南太平洋赛区试题解析1.docx
- 文档编号:9434716
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:7
- 大小:17.04KB
ACMICPC南太平洋赛区试题解析1.docx
《ACMICPC南太平洋赛区试题解析1.docx》由会员分享,可在线阅读,更多相关《ACMICPC南太平洋赛区试题解析1.docx(7页珍藏版)》请在冰豆网上搜索。
ACMICPC南太平洋赛区试题解析1
2003年ACM-ICPC南太平洋赛区试题解析-1
ACM国际大学生程序设计竞赛由国际计算机学界著名的ACM学会(AssociationforComputerMachinery)主办,是世界上规模最大、水平最高的国际大学生程序竞赛。
本文作为CSTC团队之ACM培训的启动工程训练内容,请从此题入手,开始你们痛并快乐着的ACM之旅。
此题虽为ACM比赛用题,却非常简单,没有什么特别之处,不牵扯数据结构,实为初学者建立自信心的灵丹妙药。
英文原文
P1-ACMSPPC1of2Saturday,20/09/2003
PROBLEM1-WACMIANNUMBERS
InthesupposedlyuninhabitedWacmaharaDesert,atribeofunusualpeoplehas
beendiscovered.TheWacmianshaveonly2fingersandathumboneachhand,
andhaveinventedtheirownnumberingsystem.Thedigitstheyuseandthe
symbolstheyusefordigitsarequiteunusual,butanthropologistshavebeenable
torepresentthemasfollows:
%represents0
)represents1
~represents2
@represents3
?
represents4
\represents5
$represents-1(yes,theyevenhaveanegativedigit)
Asyoumayexpect,theirsystemisbase6whereeachplacevalueis6timesthe
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数字组成。
一个单独的#占用一行,它标志输入结束。
输入举例:
)@%
?
$~~
$~~
%
#
输出格式
输出相应的是进制数字,每行一个。
输出举例:
54
842
-22
0
本题的解答如下:
#include
#include
intGetData(int*digit,FILE*fp)
{
chartemp;
inti=0;
//使用temp记录从input.in文件中逐个读出的字符
temp=fgetc(fp);
//如果为回车符,表示该数的读取已经结束了
while(temp!
='\n')
{
switch(temp)
{
case'%':
digit[i]=0;break;
case')':
digit[i]=1;break;
case'~':
digit[i]=2;break;
case'@':
digit[i]=3;break;
case'?
':
digit[i]=4;break;
case'/':
digit[i]=5;break;
case'$':
digit[i]=-1;break;
case'#':
return-1;//让函数返回-1表示input.in文件结束
}
//digit[10]用来统计数中的位数
digit[10]=i+1;
i++;//数组下标增加1
//读入下一个字符
temp=fgetc(fp);
}
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 { for(j=0;j 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 #include int GetData(int *digit,FILE *fp) { char temp; int i=0; //使用temp记录从input.in文件中逐个读出的字符 temp = fgetc(fp); //如果为回车符,表示该数的读取已经结束了 while(temp ! ='\n') { switch (temp) { case '%': digit[i] = 0;break; case ')': digit[i] = 1;break; case '~': digit[i] = 2;break; case '@': digit[i] = 3;break; case '? ': digit[i] = 4;break; case '/': digit[i] = 5;break; case '$': digit[i] = -1;break; case '#': return -1; // 让函数返回 -1 表示input.in文件结束 } //digit[10]用来统计数中的位数 digit[10] = i+1; i++; //数组下标增加 1 //读入下一个字符 temp = fgetc(fp); } return 0; } void main() { //题目中给每个数最多只有10位 //所以数组定义11位 //前10位保存每位的数字 //最后一位统计位数 int digit[11]; long number = 0; //考虑到极值状况,采用long类型 long temp = 1; int i,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 { for(j=0; j number += (digit[i]*temp); temp = 1; //将每一位转换成10进制后都需要为temp初始化 //以便下一位的转换时使用 } fprintf(fpOutput,"%ld\n",number); number = 0; //每个数字转换完成后number同样需要重新初始化 } fclose(fpInput); fclose(fpOutput); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ACMICPC 南太平洋 赛区 试题 解析