整数大小比较 阶乘就和 数据加密

给你任意三个整形数据,找出其中最大一个整形数。

#include <stdio.h>
#include <stdlib.h>
int max(int a, int b, int c);

int main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    int m = max(a, b, c);
    printf("The largest integer is:%d",m);
    return 0;
}

int max(int a, int b, int c)
{
    if(a>=c && a>=b)
    {
        return a;
    }
    if(b>=a && b>=c)
    {
        return b;
    }
    if(c>=a && c>=b)
    {
        return c;
    }
}

求1+2!+3!+…+20!的和。
注意:整形的范围,20!的阶乘已经超出了整形的范围

#include<bits/stdc++.h>

using namespace std;
const int MAXN=1e5+10;
const int L=MAXN;
int a[MAXN];

string fac(int n)
{
    string ans;
    if(n==0)
        return "1";
    memset(a,0,sizeof(a));
    int s=0,m=n;
    while(m)
    {
        a[++s] = m%10;
        m/=10;
    }
    for(int i=n-1; i>=2; i--)
    {
        int w = 0;
        for(int j=1; j<=s; j++)
        {
            a[j] = a[j]*i+w;
            w = a[j]/10;
            a[j] = a[j]%10;
        }
        while(w)
        {
            a[++s] = w%10;
            w/=10;
        }
    }
    while(!a[s])
        s--;
    while(s>=1)
        ans+=a[s--]+'0';
    return ans;
}
string add(string a,string b)//只限两个非负整数相加
{
    string ans;
    int na[L] = {0}, nb[L] = {0};
    int la=a.size(), lb=b.size();
    for(int i=0;i<la;i++)
        na[la-1-i] = a[i]-'0';
    for(int i=0;i<lb;i++)
        nb[lb-1-i] = b[i]-'0';
    int lmax = la>lb?la:lb;
    for(int i=0; i<lmax; i++)
    {
        na[i] += nb[i];
        na[i+1] += na[i]/10;
        na[i] %= 10;
    }
    if(na[lmax])
        lmax++;
    for(int i=lmax-1; i>=0; i--)
        ans+=na[i]+'0';
    return ans;
}
int main()
{
    int n;
    string ANS = "0";
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        ANS=add(ANS,fac(i));
    }
    cout<<ANS<<endl;
    return 0;
}

编程完成数据加密。数据是五位的整数,加密规则为:每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。

#include <stdio.h>
#include <stdlib.h>

int main()
{
     int a[5];
     int i = 0;
     for(i=0; i<5; i++)
     {
         scanf("%d",&a[i]);
     }
     printf("加密前:\n");
     for(i=0; i<5; i++)
     {
         printf("%5d",a[i]);
     }
     for(i=0; i<5; i++)
     {
         int temp;
         temp = (a[i]+6)%8;
         a[i] = temp;
         temp = 0;
     }
     int a1 = 0;
     a1 = a[0];
     a[0] = a[4];
     a[4] = a1;
     int a2 = 0;
     a2 = a[1];
     a[1] = a[3];
     a[3] = a2;
     printf("\n");
     printf("加密后:\n");
     for(i=0; i<5; i++)
     {
         printf("%5d",a[i]);
     }
}

猜你喜欢

转载自blog.csdn.net/zhanghuali0210/article/details/78409275