LUOGU P1603斯诺登的密码

一道恶心的字符串的模拟。毫无意义。
洛谷P1603
思路挺简单的,就是把各种单词变成数字后直接排个序,按占两个位,输出就行了(有dalao提醒我用long long)
还有another表示三者及以上(希望英语课每天睡觉的蒟蒻没有听错)所以another表示3.

#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<ctime>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cctype>
#include<cerrno>
#include<clocale>
#include<complex>
#include<deque>
#include<exception>
#include<fstream>
#include<functional>
#include<limits>
#include<list>
#include<map>
#include<ios>
#include<iosfwd>
#include<istream>
#include<ostream>
#include<queue>
#include<set>
#include<sstream>
#include<stack>
#include<stdexcept>
#include<streambuf>
#include<utility>
#include<vector>
#include<cwchar>
#include<cwctype>
#include <algorithm>
using namespace std;
unsigned long long ans;
string k[7];
int num[50];
int c=1;
int main() {
    for(int i=1; i<=6; i++) {
        cin>>k[i];  
        if(k[i]=="one")num[c]=01,c++;//令人智熄
        if(k[i]=="two")num[c]=04,c++;
        if(k[i]=="three")num[c]=9,c++;
        if(k[i]=="four")num[c]=16,c++;
        if(k[i]=="five")num[c]=25,c++;
        if(k[i]=="six")num[c]=36,c++;
        if(k[i]=="seven")num[c]=49,c++;
        if(k[i]=="eight")num[c]=64,c++;
        if(k[i]=="nine")num[c]=81,c++;
        if(k[i]=="ten")num[c]=00,c++;
        if(k[i]=="eleven")num[c]=21,c++;
        if(k[i]=="twelve")num[c]=44,c++;
        if(k[i]=="thirteen")num[c]=69,c++;
        if(k[i]=="fourteen")num[c]=96,c++;
        if(k[i]=="fifteen")num[c]=25,c++;
        if(k[i]=="sixteen")num[c]=56,c++;
        if(k[i]=="seventeen")num[c]=89,c++;
        if(k[i]=="eighteen")num[c]=24,c++;
        if(k[i]=="nineteen")num[c]=61,c++;
        if(k[i]=="twenty")num[c]=00,c++;
        if(k[i]=="a"||k[i]=="first")num[c]=01,c++;
        if(k[i]=="both"||k[i]=="second")num[c]=04,c++;
        if(k[i]=="another"||k[i]=="third")num[c]=9,c++;

    }
    sort(num+1,num+c);
    for(int i=1;i<=c-1;i++){
        ans+=num[i];
        ans*=100;
    }cout<<ans/100;//因为最后多乘了一次。
}

我为什么要写这道题
还不是我要做洛谷的试炼场。。。

### 斯诺登密码学 爱德华·斯诺登揭露了许多关于全球监控项目的细节,其中包括大量涉及加密技术和网络安全的内容。虽然斯诺登本身并不是一名程序员或密码学家,但他所揭示的信息强调了强加密的重要性。 在C语言中实现加密解密功能通常会涉及到使用成熟的库来确保安全性和效率。下面是一个简单的例子,展示如何使用OpenSSL库来进行AES加密和解密操作: #### AES 加密解密示例 ```c #include <openssl/aes.h> #include <string.h> void handleErrors(void){ /* 处理错误 */ } int main(){ unsigned char key[] = "thisisaverysecretkey!"; unsigned char iv[AES_BLOCK_SIZE]; memset(iv, 0x00, AES_BLOCK_SIZE); // 初始化上下文 AES_KEY enc_key; AES_set_encrypt_key(key, 128, &enc_key); // 假设 plaintext 是要加密的数据 const size_t plaintext_len = 32; unsigned char plaintext[plaintext_len] = "This is a secret message."; // 输出缓冲区至少为明文长度加上一个块大小减去一,向上取整到最近的块边界 unsigned char ciphertext[plaintext_len + AES_BLOCK_SIZE]; int len; // 执行加密过程 AES_cbc_encrypt(plaintext, ciphertext, plaintext_len, &enc_key, iv, AES_ENCRYPT); printf("Encrypted text:\n"); BIO_dump_fp(stdout, (const char *)ciphertext, plaintext_len); // 解密部分省略... return 0; } ``` 此代码片段展示了基于CBC模式下的AES加密方法[^1]。需要注意的是,在实际应用环境中应当更加谨慎地管理秘钥材料,并考虑采用更复杂的初始化向量(IV),而不是简单地填充零值。 对于前向安全性而言,这主要应用于公钥基础设施(PKI),特别是TLS协议中的Ephemeral Diffie-Hellman交换机制。然而,在对称加密方案如上述AES案例里,则不直接关联到前向安全性概念上[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值