c语言Have Fun with Numbers

news2024/9/25 1:14:20

题目

Have Fun with Numbers
Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers from 1 to 9, only in a different permutation. Check to see the result if we double it again!

Now you are suppose to check if there are more numbers with this property. That is, double a given number with k digits, you are to tell if the resulting number consists of only a permutation of the digits in the original number.

Input Specification:
Each input contains one test case. Each case contains one positive integer with no more than 20 digits.

Output Specification:
For each test case, first print in a line “Yes” if doubling the input number gives a number that consists of only a permutation of the digits in the original number, or “No” if not. Then in the next line, print the doubled number.

Sample Input:
1234567899
Sample Output:
Yes
2469135798

背景

额,这道题在我大一时就遇到了。当时才学c语言,用的是笨办法,结果是部分正确。由于考研需要,近期重返了c语言,虽然二年没摸c语言了,但是由于大一时苦练,很快就拾起来了。现在看到这个题目时,觉得当年的代码写的跟**一样。不过我也感谢大一时的坚持。很快,我对这题就有了新的思路。

新的思路

总体思路

统计乘积前和乘积后序列各数字的频度,然后进行比较频度即可。

细说:

由于数字只有0-9,且序列长度不会超过20。所以用一有10个有效字符的字符数组存储频度即可。这样空间复杂度为O(1)。时间复杂度为O(n)。

#include"stdio.h"
#include"string.h"
int main(){
    char array[21]="\0";//保存原序列,经算法后,保存的是乘积后的序列。(若最高位溢出,不保存溢出位1。)
    gets(array);
    char freq[2][11]={"\0","\0"};//一维保存原序列个数字出现的频度,二维保存乘积后各数字出现的频度
    int length=strlen(array);
    int j=0;//工具
    int overFlow=0;//某位乘积加上低位进位后是否溢出。0位没溢出,1位溢出。
    int i=length - 1;
    while(i>=0){
        j=array[i]-'0';
        freq[0][j]+=1;//原序列 相应数字频度+1
        j=j*2;//单位数乘2
        if(overFlow==1){
            j++;
            overFlow=0;
        }
        //处理进位。找到不为9的前一位
        if(j>9){
            j=j%10;//产生乘积后的个位数字。
            overFlow=1;
        }
        freq[1][j]+=1;//乘积后个位数字的频度加1。有了上面if,保证了0=<j<=9
        array[i]=j+'0';
        i--;
    }

    //对比各数字频度是否相等
    for(int x=0;x<10;x++){
        if(freq[0][x]!=freq[1][x]){
            printf("No\n");
            break;
        }
        if(x==9)
            printf("Yes\n");
    }
    if(overFlow==1){
        printf("1");
    }
    puts(array);
    return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2016年iOS公开可利用漏洞总结

0x00 序 iOS的安全性远比大家的想象中脆弱&#xff0c;除了没有公开的漏洞以外&#xff0c;还有很多已经公开并且可被利用的漏洞&#xff0c;本报告总结了2016年比较严重的iOS漏洞&#xff08;可用于远程代码执行或越狱&#xff09;&#xff0c;希望能够对大家移动安全方面的工…

【LeetCode】139. 单词拆分

139. 单词拆分&#xff08;中等&#xff09; 思路 首先将大问题分解成小问题&#xff1a; 前 i 个字符的子串&#xff0c;能否分解成单词&#xff1b;剩余子串&#xff0c;是否为单个单词&#xff1b; 动态规划的四个步骤&#xff1a; 确定 dp 数组以及下标的含义 dp[i] 表示 s…

Zero-ETL、大模型和数据工程的未来

编者按&#xff1a;本文探讨了数据工程领域的未来趋势和挑战&#xff0c;以及其不断变化、甚至经常出现“重塑”的特点。在数据工程领域&#xff0c;大数据的性能、容量提升总是有一定的上限&#xff0c;每一次进步都会带来一定的技术提升&#xff0c;从而提高上限。但是很快我…

解锁采购系统数字升级?来看看云时通SRM!

疫情影响下&#xff0c;全球经济一体化使得企业在供应商的管理上面临着巨大挑战&#xff0c;传统采购方法已经不足以支持企业管理和竞争&#xff0c;企业采购管理急需数字化转型。 相较于传统采购方法&#xff0c;目前成功的供应商系统管理&#xff0c;还需要具有更多的市场要…

IT圈最近比较火热的技术都是哪些?

前言 如果现在要问什么行业最火&#xff0c;毋庸置疑&#xff0c;会有很多人第一反应回答是IT行业。众所周知&#xff0c;近些年互联网行业的高速发展&#xff0c;IT技术不断推陈出新&#xff0c;各种技术更新迭代周期越来越快&#xff0c;涌入IT技术开发的人员也是成倍增长&am…

QT基础铺垫

1.qt定位 qt在整个课程体系中起到以下作用 1.c理论的实践课 2.图形用户界面GUI开发 3.一个独立的就业方向 3.qt特性 qt经常被当作是一个基于c语言的gui开发框架&#xff0c;但是这并不是qt的全部&#xff0c;除了开发界面外&#xff0c;qt还包含了很多其他功能&#xff1…

C++最后一个数组元素后加不加逗号,的问题(C++11 及以上的标准中,最后一个元素后面可以加逗号,也可以不加)

这代码看得我有点疑惑&#xff0c;最后一个元素后咋有个逗号呢&#xff1f;也没报错&#xff1f; 原因&#xff1a; 在 C11 及以上的标准中&#xff0c;最后一个元素后面可以加逗号&#xff0c;也可以不加。因此&#xff0c;上述代码可以写成以下两种形式&#xff1a; std::v…

零基础学SQL(十三、事务)

目录 前置建表 ​编辑 一、什么是事务 二、事务特性ACID 1、原子性(Atomicity) 2、一致性(Consistency) 3、隔离性(Isolation) 4、持久性(Durability) 三、事务控制 1、ROLLBACK 2、COMMIT 使用 set autocommit0;命令修改默认提交方式为FALSE 前置建表 CREATE TABLE…

无距离障碍:远程桌面Ubuntu实现全球办公

目录 前言 视频教程 1. ubuntu安装XRDP 2.局域网测试连接 3. Ubuntu安装cpolar内网穿透 4.cpolar公网地址测试访问 5.固定域名公网地址 [TOC] 转载自远程穿透文章&#xff1a;Windows通过RDP异地远程桌面Ubuntu【内网穿透】 前言 XRDP是一种开源工具&#xff0c;它允许…

Android开发中的前五个代码异味:Jetpack Compose UI和MVVM

Android开发中的前五个代码异味&#xff1a;Jetpack Compose UI和MVVM 代码异味是指软件代码中潜在问题的指标&#xff0c;可能并不一定是错误&#xff0c;但可能会导致问题&#xff0c;如增加维护复杂性、降低性能或降低可读性。我们将探讨Android开发中的前五个代码异味&…

【C++】布隆过滤器

文章目录 布隆过滤器提出布隆过滤器概念布隆过滤器应用场景设计思路:布隆过滤器的插入布隆过滤器的查找布隆过滤器删除BloomFilter.h布隆过滤器优点布隆过滤器缺陷 布隆过滤器提出 我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经…

Leetcode力扣秋招刷题路-0902

从0开始的秋招刷题路&#xff0c;记录下所刷每道题的题解&#xff0c;帮助自己回顾总结 902. 最大为 N 的数字组合 给定一个按 非递减顺序 排列的数字数组 digits 。你可以用任意次数 digits[i] 来写的数字。例如&#xff0c;如果 digits [‘1’,‘3’,‘5’]&#xff0c;我…

一图看懂 requests 模块:用Python编写、供人类使用的HTTP库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 requests 模块&#xff1a;用Python编写、供人类使用的HTTP库, 资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图模块全展开【requests】统计常量str 模块3 w…

小红书违禁词有哪些,小红书违禁词汇总分享

大家都知道小红书平台对于违禁词的管控一向非常严格&#xff0c;笔记中一旦出现就可能被限流&#xff0c;今天为大家整理了一份小红书违禁词汇总&#xff0c;希望能够帮助大家避免被限流。 小红书违禁词汇总大致有以下几个分类&#xff0c;大家平时写笔记的时候最好避开这些词或…

HashMap底层实现原理

HashMap HashMap 最早出现在 JDK 1.2中&#xff0c;底层基于散列算法实现&#xff0c;它是一个key-value结构的容器。 是一个key-value的映射容器&#xff0c;key不重复jdk8中的HashMap基于数组链表红黑树实现不保证键值的顺序可以存入null值非线程安全&#xff0c;多线程环境…

log4j2.xml配置解析

log4j2.xml文件的配置大致如下&#xff1a; Configuration&#xff1a;为根节点&#xff0c;有status和monitorInterval等多个属性 status的值有 “trace”, “debug”, “info”, “warn”, “error” and “fatal”&#xff0c;用于控制log4j2日志框架本身的日志级别&#x…

python+vue+nodejs旅游资源信息网站

1&#xff0e;系统登录&#xff1a;系统登录是用户访问系统的路口&#xff0c;设计了系统登录界面&#xff0c;包括用户名、密码和验证码&#xff0c;然后对登录进来的用户判断身份信息&#xff0c;判断是管理员用户还是普通用户。 2&#xff0e;系统用户管理&#xff1a;不管是…

如何选择正确的数据可视化图表

数据可视化是数据分析的重要组成部分&#xff0c;因为它们能够以图形格式有效地汇总大量数据。有许多可用的图表类型&#xff0c;每种类型都有自己的优势和用例。分析过程中最棘手的部分之一是选择使用这些可视化效果之一的正确方法来表示数据。 在本文中&#xff0c;我们根据需…

基于redis和threadlocal实现登录状态校验和拦截

1.流程图 单机节点下的登录状态校验 分布式节点下的登录状态校验 2.代码实现 实现步骤分为如下几步 实现WebMvcConfigurer接口&#xff0c;添加拦截器定义拦截器&#xff0c;需要配置两个interceptor&#xff0c;第一个用于刷新token&#xff0c;写threadlocal&#xff…

AI绘图实战(八):制作游戏人物原稿三视图 | Stable Diffusion成为设计师生产力工具

S&#xff1a;AI能取代设计师么&#xff1f; I &#xff1a;至少在设计行业&#xff0c;目前AI扮演的主要角色还是超级工具&#xff0c;要顶替&#xff1f;除非甲方对设计效果无所畏惧~~ 预先学习&#xff1a; 安装及其问题解决参考&#xff1a;《Windows安装Stable Diffusion …