Usaco 1.2.3 命名那个数字(Name That Number)

本文详细探讨了Usaco竞赛中关于1.2.3模块的命名数字问题,涉及输入输出处理、字符串操作及编程语言如Pascal、C的相关技巧。通过对题目的解析,帮助参赛者理解并解决这类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

 命名那个数字

来源:

 Usaco1.2.3

题目大意:

 给定一个数字,求他所组成的符合规定的字符串

数据范围:

 数字长度1~12

样例:

 4734 
GREG

做题思路:

 本来写的深搜加二分查找结果无力的挂了,换一种思路更健康。看来还是筛表实惠,把  表中符合该数字的输出,就是把题意反过来想了。

知识点:

 合理分析题意、搜索、文件读入

{
ID:Dount Nameless
TASK:namenum
LANG:PASCAL
}
var
 j,len:longint;
 s,num,r:string;
 f,t,k:boolean;
 c:char;
begin
 assign(input,'namenum.in');reset(input);{<先读数字>}
 readln(num);
 close(input);
 assign(input,'dict.txt');reset(input);{<再读文件>}
 assign(output,'namenum.out');rewrite(output);
 f:=false;{<标记是否有答案>}
 while not eof do
 begin
   readln(s);{<读入表中的每一个字符串>}
   if(ord(s[1])-ord('A'))div 3+2=ord(num[1])-ord('0') then k:=true elsek:=false;{<先处理下第一个字母与第一个数字,进行减值>}
   ifk then t:=true;
   if(length(num)=length(s))and k then{<长度相等的进入下一步比较>}
   begin
    t:=true;
    len:=length(s);
     for j:=1 to len do
     begin
      if (s[j]='S') or (s[j]='V') or (s[j]='Y') thenc:=chr((ord(s[j])-ord('A'))div 3+1+ord('0'))
      else c:=chr((ord(s[j])-ord('A'))div 3+2+ord('0'));{<将字母转化成数字,注意规律>}
      if c<>num[j] then break;
      if j=len then {<判断通过输出>}
       begin
        f:=true;
        writeln(s);
       end;
     end;
   end;
 end;
 ifnot f then writeln('NONE');{<无答案则输出none>}
 close(input);close(output);
end.

题目来源: http://ace.delos.com/usacoprob2?a=RexmW8CclSt&S=namenum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值