视频剪辑软件 centos Apache Pivot教程 HTTP请求 merge binding insert nosql requirejs vue案例 ai视频教程下载 js获取数组第一个元素 pr序列设置哪个好 html好看的字体 oracle给表增加字段 dwf文件怎么转成dwg python高级教程 python语言入门 python模块大全 java覆盖 java判断语句 java目录 java匿名函数 linux教程 俄罗斯方块c语言代码 快打旋风3出招表 7个人 彩虹岛小草黑暗之矛 位置不可用 古风头像女动漫 爱奇艺无法投屏 密码翻译 极限防守图 德玛上单天赋 微信摇骰子 租房管理软件 linux添加用户 华为手机屏保怎么设置 dh浩劫天赋 街机roms下载
当前位置: 首页 > 学习教程  > 编程语言

纪中暑假集训 2020.08.11【NOIP提高组】模拟 T1:密码

2020/8/11 19:30:47 文章标签:

密码

Description

在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏。今天他们正在观赏大地风光人情之际,忽然从遥远的东海之滨传来一阵欢笑声,上帝纵目望去,只见中山纪念中学内聚集了全中山市的中小学精英学生,他们要干什么呢?
原来他们都在做一种破译密码的游戏,人们发现:将密码棒上的数字全部相乘,就是开启天庭司粮库密码锁的密码。
如:12×34×56=22848,则22848就是一组有效的密码。
“太简单了!”人们高呼起来,继续探索着。
“这不过是早期的密码系统而已。”上帝轻蔑地环顾着神仆们说道。
可是,当人们演算了123×456×789=44253432后,上帝的神色喀什不对了,要知道,44253432是一个特别的数字,这可是天庭的机密,是谁将这些机密泄露给世人的呢?
于是,上帝搬出一张牌,对司粮库主管得墨忒耳说:“将这张牌打出去,看看他们还逞能不?”
这是天庭的其中一张王牌,但平凡得很,只不过将密码的位数增大而已,可是难就难看在看到文件:password.in中的数字后,必须在1秒内将密码输出到文件:password.out中,否则这组密码就失效了。
上帝还是仁慈的,没有将更难得牌打出来,他想把天庭的粮食恩慈人间,但他绝不会将好处给那些不动脑子的人。现在请你解开天庭司粮库密码锁的密码,帮助人们获得天庭恩赐的粮食。

Input

输入文件password.in的第一行只有一个正整数n,表示密码共有n个乘积因子。
第二行至第n+1行共n行,每行有一个小于1×10^24的正整数。这n个数均为密码的乘积因子。

Output

输出文件password.out只有一行,该行只有一个正整数,为求得的密码值。

Sample Input

3
12
34
56

Sample Output

22848

Data Constraint

【数据限制】
30%的数据,1≤n≤6,且输入的每个乘积因子均小于1000。
70%的数据,1≤n≤20。
100%的数据,1≤n≤100。
比赛&正解思路: 这题……刚开还以为我看错题了,这么简单,高精度直接干不就行了吗,你确定这题不是考我们会不会用c++/pascal
反思: 不用脑子的签到题不可能丢分!

CODE

var
        s:string;
        a,b,c:array[0..1000005]of longint;
        i,j,x,n:longint;
procedure times;
var
        i,j,x:longint;
begin
        fillchar(c,sizeof(c),0);
        for i:=1 to a[0] do
        begin
                x:=0;
                for j:=1 to b[0] do
                begin
                        c[i+j-1]:=c[i+j-1]+a[i]*b[j]+x;
                        x:=c[i+j-1] div 10;
                        c[i+j-1]:=c[i+j-1] mod 10;
                end;
                c[i+j]:=x;
        end;
        c[0]:=i+j;
        while (c[c[0]]=0)and(c[0]>1) do dec(c[0]);
        fillchar(a,sizeof(a),0);
        a:=c;
end;
begin
        readln(n);
        readln(s);
        a[0]:=length(s);
        for i:=1 to a[0] do
                a[a[0]-i+1]:=ord(s[i])-48;
        dec(n);
        while n>0 do
        begin
                fillchar(b,sizeof(b),0);
                readln(s);
                b[0]:=length(s);
                for i:=1 to b[0] do
                        b[b[0]-i+1]:=ord(s[i])-48;
                times;
                dec(n);
        end;
        for i:=a[0] downto 1 do
                write(a[i]);
        writeln;
end.

本文链接: http://www.dtmao.cc/news_show_100137.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?