与班尼特·胡迪一起找简单规律(HZOJ-2262)

与班尼特·胡迪一起找简单规律

Time Limit:   1 s      Memory Limit:   256 MB

Description

 

班尼特·胡迪发现了一个简单规律

给定一个数列,1 , 11, 21, 1211,1231 , 131221……,其规律如下:

1(首项),

前一项 “1” 中有1个1   -> 所以第二项为 11,

前一项 “11”中有2个1   ->所以第三项为  21,

前一项 “21”中有1个2,1个1  -> 所以第四项为1211,

1个2,3个1  -> 1231 ,

1个3,1个2,2个1 -> 131221,

……

现在,给你首项 n ,请输出数列中第m个数,0<m<1000000, m的总和不超过 1.1×10^6 ,n的长度不超过1000000.

 

Input

多组输入,每行输入两个自然数,n和m。

 

Output

每行输出一个答案。

Samples

input:
1  6
output:
131221

Author

Source

杭州师范大学第十一届程序设计竞赛

 

题解:统计一个数字出现的次数,然后次数+数字从大到小输出。

思路:这边要注意n的长度是0-1000000,注意不是大小!!!读入要用字符串读入。然后算m-1次。

贴一下我自己补的代码。

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<iostream>
 6 using namespace std;
 7 int a[1000000];
 8 int num[10];
 9 int main()
10 {
11     char n[1000000];
12     int m;
13     int l,i,numble;
14     while(scanf("%s %d",&n,&m)!=EOF)                 //读入数据
15     {
16         l=strlen(n);                                 //字符串长度
17         for(i=0;i<l;i++)                          //倒着读入
18         {
19             a[i]=n[i]-'0';                       //存数字
20         }
21         m=m-1;
22         while(m--)                        //循环m-1遍
23         {
24             memset(num,0,sizeof(num));            //清空一次每个数字出现几次
25             for(i=0;i<l;i++)
26             {
27                 num[a[i]]++;                     //计算每个数字出现的次数
28             }
29             l=0;                              //清空长度
30             for(i=0;i<=9;i++)
31             {
32                 if(num[i]>0)                 //从0开始,如果该数据出现了
33                 {
34                     a[l++]=i;                //第一个输入是什么数字
35                     while(num[i]>0)
36                     {
37                         a[l++]=num[i]%10;       //第二个计算出现的次数,大于10要逐个取出来
38                         num[i]/=10;
39                     }
40                 }
41             }
42         }
43         for(i=l-1;i>=0;i--)
44         {
45             printf("%d",a[i]);            //要从大到小输出
46         }
47         printf("\n");
48     }
49     system("pause");
50     return 0;
51 }

 贴一下出题人美丽的代码:https://paste.ubuntu.com/26264736/

转载于:https://www.cnblogs.com/Tangent-1231/p/8127474.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
平民海草行久在原神深渊12-3下半中可以使用以下阵容进行打法: 主阵容: 1.主DPS:可以选择使用雷元素或火元素的角色,如芭芭拉、迪卢克或凯亚等,注意要加强元素抗性和攻击力。 2.辅助DPS:可以选择使用风元素或冰元素的角色,如旅行者、琴或甘雨等,主要用于控制沙虫的移动和攻击,增加队伍输出。 3.支援角色:可以选择使用能提供元素增益和治疗的角色,如钟离、行秋或尼特等,主要用于增加队伍的生存能力和输出。 4.反应角色:可以选择使用能产生元素反应的角色,如菲谢尔、雷泽或烟绯等,主要用于增加队伍的输出和控制。 备选阵容: 1.主DPS:可以选择使用其他元素的角色,如岩元素或水元素,视情况而定。 2.辅助DPS:可以选择使用其他元素的角色,如雷元素或火元素,视情况而定。 3.支援角色:可以选择使用其他能提供元素增益和治疗的角色,如丽莎、珂亚或诺艾尔等,视情况而定。 4.反应角色:可以选择使用其他能产生元素反应的角色,如安柏、凝光或香菱等,视情况而定。 在打沙虫的时候,需要注意以下几点: 1.沙虫有两个弱点,分别位于头部和尾部,攻击这两个部位可以增加输出和控制。 2.沙虫会在地下移动,需要用辅助DPS的技能进行控制。 3.沙虫会喷射毒液,需要躲避或使用支援角色的治疗技能进行治疗。 4.沙虫会释放元素爆发,需要注意躲避和加强生存能力。 总的来说,需要根据自己的阵容和实际情况进行组合和打法,调整好每个角色的技能和装备,才能更好地应对深渊12-3下半的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值