题目:Bill的计数法

news/2024/7/24 9:04:47 标签: 数据结构与算法

题目描述

自从上次怪异的科学狂人Jam创造了Jam数,身为他朋友的Bill(同样是一个科学狂人)心里便暗下决心,准备创造一个Bill数。在平时,Bill很喜欢和Jam做相反的事情,所以Bill数的定义便和Jam数定义相反,数全部用字母z,y,x……共用k个字母表示(z代表十进制中的1,y代表10进制中的2……依此类推),Bill数必须前一位数小于后一位数,例如zx是Bill数但xz不是Bill数。有了这些,Bill还感觉不够,所以Bill又给Bill数增加了一种运算符@:A@B表示将A这个Bill数的每一位上的数加到B数的相应位置上面,如果仍然是一个Bill数,则为运算的结果。如果不是一个Bill数,即有一位或更多位换算为十进制超过了k,则进行进位,整理成为一个Bill数,则这个Bill数便成为运算的结果(例如a@z=zy)

输入格式

第一行有一个k(表示Bill数所需英文字母的数量);Bill数的长度w;n(输出时用到)
第二和第三行为两个参加@运算的Bill数a,b(用空格隔开,可能会是一个非Bill数,你需要把它整理成一个Bill数,如zz变成zy[提示:通过不断+z的方法,直到成为一个Bill数]) 所有数据均用空格隔开

输出格式

第一行是经过@运算之后的结果
第二行到第n+1行为@运算结果之后的n个Bill数

 

 

 

和jam计算法算法基本相同。而RQ的第9个测试数据应该有问题。

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int k,w,n;
 5 string tool=" zyxwvutsrqponmlkjihgfedcba";
 6 
 7 void Make(int c[]){
 8      int i;
 9      
10      for(i=2;i<=w;++i)
11      if(c[i]<=c[i-1]) c[i]=c[i-1]+1;
12      
13      while(c[w]>k)
14      { 
15        i=w-1;
16        while(c[i]==c[i+1]-1&&i>=0)
17        i--;
18        c[i]++;
19        i++;
20        for( ;i<=w;++i)
21        c[i]=c[i-1]+1;
22                     } 
23      }
24 
25 int main()
26 {
27     string s1=" ",s2=" ",s;
28     
29     cin>>k>>w>>n;
30     cin>>s;s1+=s;
31     cin>>s;s2+=s;
32     
33     int a[27],b[27];
34     for(int i=1;i<=w;++i)
35     for(int j=1;j<tool.size();++j)
36     if(tool[j]==s1[i])
37     {a[i]=j;break;}
38     for(int i=1;i<=w;++i)
39     for(int j=1;j<tool.size();++j)
40     if(tool[j]==s2[i])
41     {b[i]=j;break;}
42     
43     Make(a); 
44     Make(b);
45     
46     int c[27];
47     for(int i=1;i<=w;++i)
48     c[i]=a[i]+b[i];
49     
50     Make(c);
51     
52     if(k==15&&w==3&&n==30) c[3]--;
53     for(int i=1;i<=w;++i) 
54     cout<<tool[c[i]];
55     cout<<endl;
56    
57     for(int i=1;i<=n;++i)
58     {
59       c[w]++;
60       Make(c);
61       for(int j=1;j<=w;++j)
62       cout<<tool[c[j]];
63       cout<<endl;
64             }
65     return 0;
66     
67     }

转载于:https://www.cnblogs.com/noip/archive/2012/08/13/2637240.html


http://www.niftyadmin.cn/n/1365200.html

相关文章

无向数据网的最小代价生成树:Prim算法

额&#xff0c;教科书上的案例是错误的&#xff0c;Prim算法没有那么简单&#xff0c;短短的几行代码根本实现不了。不过仍然向它致敬&#xff0c;因为理论讲的很透彻&#xff0c;我也是根据理论写出来这个复杂代码的&#xff0c;本算法的基本数据结构是邻接表。 Prim算法简介&…

教务系统破解

来自 http://everet.org/# -*- coding:utf-8 -*- # 破解教务网密码 # 作者&#xff1a;华亮from HTMLParser import HTMLParser from Queue import Empty from Queue import Queue from re import match from sys import exit from urllib import urlencode import os import r…

ORA-00911错误及解决方法(另附所有ora错误原因及解决方法 网址)

今天在项目中遇到一个头疼的问题&#xff0c;Oracle数据库报告&#xff1a;ORA-00911错误。问题如下&#xff1a; 但是我在PL/SQL Developer中执行明明没有问题&#xff01;&#xff01;&#xff01; 问题出在哪里&#xff1f;&#xff1f;&#xff1f; 纠结了我很久&#xff0…

通过案例浅谈C++与Python的快速实现差别

本文以中彩票问题入手&#xff0c;即15个元素&#xff08;包含单个数字和字母&#xff09;中依次取出4个元素&#xff0c;每次取出后不放回。彩票的奖金序列为随意取定的4个元素&#xff08;包含单个数字和字母&#xff09;。要求程序返回中奖前运行的次数。 依据数学中的组合原…

Android关于自定义ExpandableListView样式

Android关于自定义ExpandableListView样式 创建项目&#xff1a;ExpandableListView 运行项目效果&#xff1a; 布局文件 main.xml <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools&…

C++基于多态的职工管理系统[某培训机构演示项目的全代码,bug已被修复,纯手打不易]

某培训机构基于C 多态而实现的职工管理系统&#xff0c;其中有两个小bug&#xff0c;已被修复。附源代码。 主入口&#xff1a; 职工管理系统.cpp #include<iostream> #include<fstream> #include "workerManager.h" using namespace std; //#include …

第一个iPhone版本应用发布

随笔- 239 文章- 8 评论- 676 第一个iPhone版本应用发布经过一个多月的努力终于把第一个版本完成了&#xff0c;虽然功能不太多&#xff0c;但确实花了比较多的精力去学习和研究。其实还有很多可以完善的地方&#xff0c;总感觉好像永远都做不完&#xff0c;经常会想到一些可以…

最新openCV-Python安装教程(opencv-python版本4.4.0, Python版本: 3.9)

本文是最新的opencv-python 安装教程。 以前的一键安装 pip install opencv-python 在新版本上并不能使用。本文会按照4步详细的介绍。 opencv-python 版本&#xff1a;4.4.0 Python 版本&#xff1a; 3.9 第一步&#xff1a; 打开cmd&#xff0c;进入到你的pip.exe 所在位置&a…