#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