代码编织梦想

《编程思维与实践》1002.神秘信息

题目

在这里插入图片描述
在这里插入图片描述

思路

由相同的符号表示相同的数码,不同的符号表示不同的数码可以知道: 如果神秘信息中有 n 个不同的字符,那么至少是 n 进制的 ( 像两个字符至少要用 1 和 0 表示 ) 那么不难知道当 n 进制时,表示的整数才可能是最小的 同时,要想使表示的整数最小那越靠前的字符表示的数应该越小 但应注意第一个字符不能表示为 0 ,如 : c a t s 的四进制最小表示为 1023 进制转换 N = k n R n + k n − 1 R n − 1 + . . . + k 1 R + k 0 可以通过迭代来计算: N = ( k n R n − 1 + k n − 1 R n − 2 + . . . + k 1 ) R + k 0 也就是说可以先求出 k n R 再乘上 R 加上 k n − 1 一直如此操作直到加到 k 0 由相同的符号表示相同的数码,不同的符号表示不同的数码可以知道:\\ 如果神秘信息中有n个不同的字符,那么至少是n进制的(像两个字符至少要用1和0表示) \\ 那么不难知道当n进制时,表示的整数才可能是最小的\\ 同时,要想使表示的整数最小那越靠前的字符表示的数应该越小\\ 但应注意第一个字符不能表示为0,如:cats的四进制最小表示为1023\\ 进制转换\quad N=k_nR^n+k_{n-1}R^{n-1}+...+k_1R+k_0 \\ 可以通过迭代来计算:N=(k_nR^{n-1}+k_{n-1}R^{n-2}+...+k1)R+k_0\\ 也就是说可以先求出k_nR \quad 再乘上R加上k_{n-1} \quad 一直如此操作直到加到k_0 由相同的符号表示相同的数码,不同的符号表示不同的数码可以知道:如果神秘信息中有n个不同的字符,那么至少是n进制的(像两个字符至少要用10表示)那么不难知道当n进制时,表示的整数才可能是最小的同时,要想使表示的整数最小那越靠前的字符表示的数应该越小但应注意第一个字符不能表示为0,如:cats的四进制最小表示为1023进制转换N=knRn+kn1Rn1+...+k1R+k0可以通过迭代来计算:N=(knRn1+kn1Rn2+...+k1)R+k0也就是说可以先求出knR再乘上R加上kn1一直如此操作直到加到k0

代码

#include<stdio.h>
int main()
{
	int T;
	scanf("%d",&T);     
	for(int i=0;i<T;i++)
	{
        char s[61];        //字符串长度最多为60 数组应该开61
		scanf("%s",s);
		int a[128];    //相同的符号表示相同的数可以利用ASCII码表的对应关系
		
        for(int j=0;j<128;j++)
		{
			a[j]=-1;              //用数组来存储每个位置的数字 
		}
        
        char *p=s;
        a[*p]=1;        //先将最特殊的第一个赋值(断点),之后对第二个以后的处理
        int digit=0;   //赋值
        int number=1;  //统计不同元素个数,也就是最小的进制数
        
		while(*(++p)!='\0')
		{
			if(a[*p]==-1)  //为-1表示判断未赋过值,也就是新元素
			{	
                a[*p]=digit;
                digit=digit?digit+1:2;   //digit为0时digit的值为2 否则为digit+1  (如1023) 
				number++;
			}
		}
        
		if(number<2)  //没有一进制 
		{
			number=2;
		}
        
		p=s;
        long long count=0;  //计算最小的十进制数
        
		while(*p!='\0')
		{
			count=count*number+a[*p];   //number为进制数
			p++;
		}
      
        printf("case #%d:\n",i);
		printf("%lld\n",count);
	}	
	return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/boxueyuki/article/details/129630502

易懂如何理解单个神经元+随机梯度下降学习逻辑与规则编程实践_司南牧的博客-爱代码爱编程

易懂的神经网络Python实战:单个神经元+随机梯度下降学习逻辑与规则 目录 逻辑与(AND) 破除神经元的认知障碍 实践:用程序表示一个手工设置权重weight和偏置bias的神经元 那么怎么让计算机自己确定神经元的参数? 梯度下降 1。直观理解梯度下降 2。梯度下降怎么做的? 4。梯度下降有啥用? 实践:动手实现随机梯度下降(根据上

第1章《启蒙》. 5.从C到C++,谈谈人类的编程思维-爱代码爱编程

0. 引子 想要对着机器发号指令,但又不直接使用“机器语言”,我们就会想制定一门比较符合人类思维习惯的编程语言,然后再用“翻译/编译”器将它转成机器语言。简单地说,就是一个使用C(中间工具)将B(接近人类思维的语言所写的代码)转换成A(机器语言)的过程。 那么人类有什么思维习惯呢?比如人类都喜欢 “先入为主”,所以我们制定的新语言一定要每一个单词都看上

程序设计思维与实践 week4 作业-爱代码爱编程

A-DDL的恐惧 ZJM 有 n 个作业,每个作业都有自己的 DDL,如果 ZJM 没有在 DDL 前做完这个作业,那么老师会扣掉这个作业的全部平时分。 所以 ZJM 想知道如何安排做作业的顺序,才能尽可能少扣一点分。 请你帮帮他吧! input 输入包含T个测试用例。输入的第一行是单个整数T,为测试用例的数量。 每个测试用例以一个正整数N开头(1&

【20200513程序设计思维与实践 Week13 作业】-爱代码爱编程

目录 D - TT 的苹果树题意思路代码E - TT 的神秘任务3题意思路代码 D - TT 的苹果树 题意 在大家的三连助攻下,TT 一举获得了超级多的猫咪,因此决定开一间猫咖,将快乐与大家一同分享。并且在开业的那一天,为了纪念这个日子,TT 在猫咖门口种了一棵苹果树。 一年后,苹果熟了,到了该摘苹果的日子了。 已知树上共有 N 个节

课后自主练习(进制) 1003. 神秘信息 medium《编程思维与实践》个人学习笔记-爱代码爱编程

题目要求 解题思路 ①由于可能出现键盘上所有的数字和字母来进行进制的转换,所以开一个比ASCII码多的整型数组来把把数组对应的字符的ASCII吗下标的内容变成对应的数字 ②int的初始化一般只能初始化0,所以要用memset来将内容全部变成-1,值得注意的是memset的格式, (数组地址,要变的数字,类型的占据×数量) 另外一点,memset

课后自主练习 (进制)1010. 平衡三进制 naive《编程思维与实践》个人学习笔记-爱代码爱编程

题目 解题思路 应用 1003 神秘信息中的 字母表对应可以快速解决,如果想不到用if 或者 switch 判断也可以轻松解决 代码 #include<iostream> #include<string> using namespace std; //字母表映射 void Ternary(string a) {

课后自主练习(implement)1095. 神秘单词 naive《编程思维与实践》个人学习笔记-爱代码爱编程

题目 详见猜猜猜 代码 #include<iostream> using namespace std; const int MOD = 1e9+7; typedef long long ll; ll func(string a) { int len = a.length(); if(len == 1) retu

光电信息科学与工程 c语言,五子棋小游戏-光电信息科学与工程c语言程序设计.docx...-爱代码爱编程

PAGE \* MERGEFORMAT 21 成 绩 评 定 表学生姓名郭雨佳班级学号1409060103专 业光电信息科学与工程课程设计题目五子棋小游戏评 语 组长签字:成绩 日期 20 年 月 日课程设计任务书学 院理学院专 业光电信息科学与工程学生姓名郭雨佳班级学号1409060103课程设计题目五子棋小游戏实践教学要求与任务: 要求:

计算机的科学思维是啥,浅谈计算机语言教学中的科学思维-爱代码爱编程

摘要:走出计算机语言教学困境的方法是要求教师通过教学使学生深刻体会到马克思主义世界观和方法论的科学真理性和力量,将教会学生科学的思维作为自己的崇高目标,充分发挥左脑与右脑的抽象思维与形象思维能力,让语言与算法由抽象的虚拟世界变成形象生动的“现实世界”,培养创新性思维,提高学生创新能力。 关键词:哲学理念;形象思维;抽象思维;创新 中图分类号:TP3

休谟与人机、因果、实践-爱代码爱编程

 【人们常常会根据动机来评判人类,而根据结果评判机器。有道无术,术尚可求也,有术无道,止于术。或许,在这里道不妨粗略类比为算计,术为计算。】 ​    虽然休谟属于18世纪的哲学家,他的著作中讨论到的题材大多与现代智能界的主要争论有密切关系,这与其他同时代的哲学家相较是相当罕见的。一些休谟最具影响力的智能思想可以归类为以下几点: 因果问题  

神秘信息——编程思维与实践_一个normal人853的博客-爱代码爱编程

题目: 1002. 神秘信息 单点时限: 2.0 sec 内存限制: 256 MB 未来的某一天,人类登陆火星。在火星上发现一组由各种符号表示的神秘信息。研究发现:每种符号表示一个数码,神秘信息是一个整数。但是不知道每个符号表示的是哪个数码,也不知道它是几进制数 (只知道不可能是一进制),但知道相同的符号表示相同的数码,不同的符号表示不同的数码。

【学习笔记】c++ 编程规范——101条规则、准则与最佳实践_黄金旺铺的博客-爱代码爱编程

C++编程规范-101条规则-准则与最佳实践 【书名】:C++编程规范-101条规则-准则与最佳实践 【作者】:Herb Sutter 【译者】:刘基诚 尽早进入正轨,以同样的方式实施同样的过程,不断积累惯用法,将其标准

一个高中生的编程自学经历-爱代码爱编程

年轻时的linus 最近,在看雪论坛上看到了一个高中生分享的自学经历,想起我第一次学习编程时候,当年高考后,由于大学选了计算机专业,就好奇去了看一本c语言编程(书是亲戚的)书籍,好奇心驱使我们主动去探索未知,这种探索精神正是极客所必须的,但自学也需要克服很多困难(自学成才需要天时地利人和),分享给大家看一看。 以下是正文内容:

来自北大算法课的leetcode题解:1002. 查找共用字符-爱代码爱编程

代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University. 解法1(T38% S48%):因为相同的字符要统计多变所以还是很绕的,如果不同字符