zoukankan      html  css  js  c++  java
  • 问题 : base64解密

    问题 : base64解密

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 3  解决: 3
    [提交][状态]

    题目描述


    Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。

    为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

    如对字符’0’进行Base64加密,则是如下步骤:

    字符’0’的二进制为00110000,前六位拿出来,前面补俩个0则是0001100,对应表得字符M。后面不足6位,只有俩位0,拿出来,前面补6个0,则是00000000,对应表得字符A。

    由于还有2个6位的字节没显示,则用俩个=字符补充

    那么字符0的Base64编码为MA==

    现在蛋蛋给了你一段加密后的Base64密文,他说题意隐藏在密文里面,如果你知道了题意,就肯定可以做出本题。密文如下:

    d2hhdCBpcyB0aGUgcmVtYWluZGVyIHdoZW4gdGhlIG51bWJlciBpcyBkaXZpZGVkIGJ5IDMwMDg/


    输入

    第一行一个整数t,代表有t组数据,每组数据输入一个整数x,0<=x<=2^31-1

    输出

    输出一个整数x,x为答案

    样例输入

    3
    0
    1
    2016

    样例输出

    0
    1
    2016

    提示

    这个是题意解码,大概意思是对3008取余。

    在if那里卡了很长时间。

    #include<stdio.h>
    int a[100][7],s[1010];
    int main()
    {
    	char n;
    	long long t,i,j,k,sum=0,ans;
    	for(i=0;i<76;i++)
    	{
    		scanf("%c",&n);
    		j=5;
    		if(n>='a'&&n<='z')
    			n-=71;	
    		else if(n>='A'&&n<='Z')            //一定要加else!!!!
    			n-=65;
    		else if(n>='0'&&n<='9')             //一定要加else!!!!
    			n+=4;
    		else if(n=='+')                     //一定要加else!!!!
    			n=62;
    		else if(n=='/')                     //一定要加else!!!!
    			n=63;
    		while(n)
    		{
    			a[i][j]=n%2;
    			n/=2;
    			j--;
    		}
    	}
    	k=0;
    	
    		ans=0;sum=0;
    		for(i=0;i<76;i++)
    		{
    			for(j=0;j<6;j++)
    			{
    				ans=ans*2+a[i][j];
    				sum++;
    				if(sum==8)
    				{
    					sum=0;
    					printf("%c",ans);
    					ans=0;
    				}
    			}
    		}
    	return 0;
    }

    #include<stdio.h>
    int main()
    {
    	int t,x;
    	while(scanf("%d",&t)!=EOF)
    	{
    		while(t--)
    		{
    			scanf("%d",&x);
    			printf("%d
    ",x%3008);
    		}
    	}
    	return 0;
    }





  • 相关阅读:
    001 windows下如何生成公钥和私钥
    函数基础
    各种推导式
    MySQL误删数据
    kafka 学习笔记
    Nginx 功能
    Nginx 到底可以做什么
    Nginx 到底可以做什么
    Shell的18条常用命令整理
    超详细 Nginx 极简教程
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/10003065.html
Copyright © 2011-2022 走看看