基础数学-4

来源:互联网 发布:拼音发音软件下载 编辑:程序博客网 时间:2024/05/23 18:06
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5,mod=1000000007;ll a[N+100];ll quick_mod(ll a,ll b)(快速幂){    ll ans=1;    a%=mod;    while(b)    {        if(b&1){ans=ans*a%mod;}        a=a*a%mod;        b>>=1;    }    return ans;}int main(){    int n,x;    scanf("%d%d",&n,&x);    ll s=0;    for(int i=0;i<n;i++){scanf("%lld",&a[i]);s+=a[i];}    for(int i=0;i<n;i++) a[i]=s-a[i];    sort(a,a+n);a[n]=-1;    int cn=1;ll c;    for(int i=0;i<=n;i++)    {        if(a[i]==a[i+1])        {           cn++;        }        else        {            if(cn%x)            {                c=a[i];break;            }            else            {                cn/=x;                a[i]+=1;                i--;            }        }    }    c=min(c,s);    printf("%lld\n",quick_mod(x,c));    return 0;}

Prime Number

#include<bits/stdc++.h> //想到解法using namespace std;typedef long long ll;const int N=1e6;char str[N+100];int p[N+100],o;int num[8]={1869,6891,1896,1689,1986,1968,1698};void init(){    int a[4]={1,6,8,9};    for(int i=0;i<4;i++)     for(int j=0;j<4;j++)      for(int u=0;u<4;u++)       for(int v=0;v<4;v++)         for(int c=0;c<=6;c++)          {                if(i!=j&&i!=u&&i!=v&&j!=u&&j!=v&&u!=v)                {                    int x=10000*c+1000*a[i]+100*a[j]+10*a[u]+a[v];                    if(x%7==0) printf("%d\n",x);                }          }}int f(int *a,int len){    int flag=1,flag1=1,flag6=1,flag8=1,flag9=1;    int c=0;    for(int i=len;i>=1;i--)    {        if(flag1&&a[i]==1) {flag1=0;continue;}        if(flag6&&a[i]==6) {flag6=0;continue;}        if(flag8&&a[i]==8) {flag8=0;continue;}        if(flag9&&a[i]==9) {flag9=0;continue;}         c=c*10+a[i];         c%=7;        if(a[i]==0&&flag){o++;}        if(a[i]&&flag){flag=0;}        if(flag==0) printf("%d",a[i]);    }    return c;}int main(){        scanf("%s",str);        int len=strlen(str),s=0;        for(int i=len,j=0;i>=1;i--,j++) {p[i]=str[j]-'0';s+=p[i];}        if(len>4&&s==24)        {            printf("1869");            for(int i=len-4;i>=1;i--) printf("0");            printf("\n");return 0;        }        printf("%d",num[f(p,len)]);        while(o--) printf("0");        printf("\n");        return 0;}
Divisible by Seven

0 0
原创粉丝点击