| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1520 人关注过本帖
标题:数字加密
只看楼主 加入收藏
小可爱0920
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2016-12-18
结帖率:90%
收藏
 问题点数:0 回复次数:8 
数字加密
输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。

输入
输入在一行中给出一个四位的整数x,即要求被加密的数。

输出
在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。

样例输入
1257
样例输出
The encrypted number is 4601
搜索更多相关主题的帖子: number 加密 
2016-12-19 21:59
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
#include<stdio.h>
main()
{
    int n=1257;
    printf("%d\n", (((n/10)%10+9)%10)*1000 + ((n%10+9)%10)*100 + (((n/1000)%10+9)%10)*10 + ((n/100)%10+9)%10);
}
收到的鲜花
  • 搬砖2016-12-20 19:55 送鲜花  3朵   附言:我很赞同
2016-12-19 22:31
小可爱0920
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2016-12-18
收藏
得分:0 
#include<stdio.h>
int main()
{
    int a[4],i,t;
    char b[4];
    gets(b);
    for(i=0;i<4;i++){
        a[i]=(b[i]-'0'+9)%10;
    }
    for(i=0;i<2;i++){
        t=a[i];
        a[i]=a[i+2];
        a[i+2]=t;
    }
    t=a[0]*1000+a[1]*100+a[2]*10+a[3];
    printf("%d",t);
    return 0;
}


2016-12-19 23:04
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
话说,加密后十位上有0,交换数位,0跑到千位上去了,那么,那个0能省略吗

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-20 00:26
搬砖
Rank: 2
等 级:论坛游民
帖 子:68
专家分:37
注 册:2016-10-13
收藏
得分:0 
回复 4楼 九转星河
对哦,吹版主那样做千位上的零就省略了
2016-12-20 20:04
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用搬砖在2016-12-20 20:04:55的发言:

对哦,吹版主那样做千位上的零就省略了

如果是一个数值,左边的0有什么意义?
如果是字符串可以在最后用“高位补齐”,缺多少个就补多少个。
2016-12-20 20:20
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 5楼 搬砖
如果不能省略,则要用数组(窜)处理~分别获取各个位数上的数字,直接按1-3,2-4保存就行了,无需后续交换数位~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-20 20:22
搬砖
Rank: 2
等 级:论坛游民
帖 子:68
专家分:37
注 册:2016-10-13
收藏
得分:0 
以下是引用吹水佬在2016-12-19 22:31:35的发言:

#include<stdio.h>
main()
{
    int n=1257;
    printf("%d\n", (((n/10)%10+9)%10)*1000 + ((n%10+9)%10)*100 + (((n/1000)%10+9)%10)*10 + ((n/100)%10+9)%10);
}


printf("%d\n",
改成printf("%04d\n"  好像就可以了
收到的鲜花
2016-12-20 21:22
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 8楼 搬砖
学习了,原来这样能在位数不足的时候补0

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-20 21:27
快速回复:数字加密
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027100 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved