欢迎光临
我们一直在努力

【题解】WebGoC 21816.算筹

题目描述

统计n个正整数的和,并用横式的算筹表示。例如:n=3,数为12 55 6134。和为6201,结果是:

image.png


图中0用半径为25的圆,每个线段长度是50,多个横线的相邻距离是10。所有算筹图形的底部在一个水平线上,相邻的图形间隔距离为20,颜色为黑色(0号)。


【提示】

  数x最后一位是:x%10

  数x去掉最后一位,可以写成:x = x/10;


【小知识】

  0到9的横式算筹如下:

image.png


输入格式

第1行1个正整数n。n<10。

第2行n个正整数。


输出格式

相应的图形。


输入/输出例子1

输入:

2

102 8

输出:

image.png


参考答案

void chou(int a)
{
p.up().c(0);
if(a==0) p.fd(25).o(25).bk(25);
if(a==1)
p.rr(50,4);
if(a==2)
p.rr(50,4).fd(10).rr(50,4).bk(10);
if(a==3)
{
for(int i=0;i<3;i++)
p.rr(50,4).fd(10);
p.bk(30);
}
if(a==4)
{
for(int i=0;i<4;i++)
p.rr(50,4).fd(10);
p.bk(40);
}
if(a==5)
{
for(int i=0;i<5;i++)
p.rr(50,4).fd(10);
p.bk(50);
}
if(a==6)
{
p.rr(50,4).fd(25).rr(4,50).bk(25);
}
if(a==7)
{
p.rr(50,4).fd(10).rr(50,4);
p.fd(25).rr(4,50).bk(35);
}
if(a==8)
{
for(int i=0;i<3;i++)
p.rr(50,4).fd(10);
p.fd(15).rr(4,50).bk(45);
}
if(a==9)
{
for(int i=0;i<4;i++)
p.rr(50,4).fd(10);
p.fd(15).rr(4,50).bk(55);
}
}
int main(){
p.speed(9).moveTo(300,0);
int n,x,a=0,l;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>x;
a+=x;
}
for(;;)
{
l=a%10;
a=a/10;
chou(l);
p.lt(90).fd(70).rt(90);
if(a<1)
break;
}
p.hide();

return 0;
}


题目链接:

https://v1.51goc.com/question/viewProgram/21816

(进去后要登录)

赞(0)
未经允许不得转载:171主机测评 » 【题解】WebGoC 21816.算筹
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址