NerCoder 练习赛13
今天有点事,,明天要考CCF,就不写题解了,祝福我 BUFF 加成,我要AK
#include <bits/stdc++.h> using namespace std; typedef long long ll ; typedef double dl ; #define INF ((ll)2e9) const int inf = 987654321; const int sz = 1e6 + 5; const int mod = 1e9 + 7; const int sqrtn = 300; #define f(i,l,r) for(int i=(int)l;i<=(int)r;++i) #define g(i,l,r) for(int i=(int)l;i>=(int)r;--i) #define CLR(arr,val) memset(arr,val,sizeof(arr)) #define sz(a) strlen(a) #define FAST_IO ios::sync_with_stdio(false);cin.tie(0); #define lowbit(x) x&(-x) #define X first #define Y second #define pb push_back #define pii pair<int,int> ll poww(ll a,ll b,ll c ) { ll ans=1,base=a; while(b!=0) { if(b&1!=0) ans = ans*base%c; base= base*base%c; b/=2; } return ans; } int gcd(int a,int b) { if(b==0)return a; return gcd(b,a%b); } int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}}; int n; int a,b,t; void work() { char c ; while(cin>>c) { if(c=='4'){ a++; if(t==0)t=4; } if(c=='7'){ b++; if(t==0)t=7; } } if(a==0&&b==0)cout<<-1<<endl; else if(a>b) cout<<4<<endl; else if(b>a) cout<<7<<endl; else cout<<t<<endl; } int main() { FAST_IO ; freopen("in","r",stdin); freopen("out","w",stdout); cout<<"hello"<<endl; work(); return 0; }
#include<bits/stdc++.h> using namespace std; #define LOACL freopen("in","r",stdin);\ freopen("out","w",stdout); const int inf = 987654321; const int sz = 1e6 + 5; const int mod = 1e9 + 7; const int sqrtn = 300; #define pb push_back #define add(u,v,w) (e[++tot]=(edge){v,head[u],1},head[u]=tot;) #define f(i,l,r) for(int i=(int)l;i<=(int)r;++i) #define g(i,l,r) for(int i=(int)l;i>=(int)r;--i) #define CLR(arr,val) memset(arr,val,sizeof(arr)) typedef long long LL; inline void read(LL& x){int f=1;char c;while(((c=getchar())<'0'||c>'9')&&c!='-');c=='-'?(f=-1,x=0):(x=c-'0');while((c=getchar())>='0'&&c<='9')x=x*10+c-'0';x*=f;} inline void read(int& x){LL t;read(t);x=t;} vector<LL> ans; void p(LL s){ LL t1=s*10+4; if(t1>LL(4444444444ll)) return; ans.pb(t1); LL t2=s*10+7; if(t2>LL(444444444)) return; ans.pb(t2); p(t1);p(t2); } int main() { p(0);sort(ans.begin(),ans.end()); LL l,r;read(l);read(r); LL as=0; while(l<=r){ int q=int(lower_bound(ans.begin(),ans.end(),l)-ans.begin()); as+=1LL*(min(r,ans[q])-l+1)*ans[q]; l=min(r,ans[q])+1; } printf("%lld\n",as); return 0; return 0; }
#include<bits/stdc++.h> using namespace std; #define LOACL freopen("in","r",stdin);\ freopen("out","w",stdout); const int inf = 987654321; const int sz = 1e6 + 5; const int mod = 1e9 + 7; const int sqrtn = 300; #define add(u,v,w) (e[++tot]=(edge){v,head[u],1},head[u]=tot;) #define f(i,l,r) for(int i=(int)l;i<=(int)r;++i) #define g(i,l,r) for(int i=(int)l;i>=(int)r;--i) #define CLR(arr,val) memset(arr,val,sizeof(arr)) typedef long long ll; int main() { LOACL string s; int n,k; cin>>n>>k>>s; for(int i=0;i<n-1;i++) { if(k<=0)break; if(s[i]=='4'&&s[i+1]=='7') { k--; if(i&1) { s[i]='7'; if(i>=1&&s[i-1]=='4') { if(k&1)s[i]='4'; cout<<s<<"\n"; return 0; } } else { s[i+1]='4'; if(i+2<s.size()&&s[i+2]=='7') { if(k&1)s[i+1]='7'; cout<<s<<"\n"; return 0; } } } } cout<<s<<"\n"; return 0; }
#include<bits/stdc++.h> using namespace std; #define LOACL freopen("in","r",stdin);\ freopen("out","w",stdout); const int inf = 987654321; const int sz = 1e6 + 5; const int mod = 1e9 + 7; const int sqrtn = 300; #define add(u,v,w) (e[++tot]=(edge){v,head[u],1},head[u]=tot;) #define f(i,l,r) for(int i=(int)l;i<=(int)r;++i) #define g(i,l,r) for(int i=(int)l;i>=(int)r;--i) #define CLR(arr,val) memset(arr,val,sizeof(arr)) typedef long long ll; ll n ,k,x,y,p=1,s=1,ans; ll a[sz],nf,g[110] ; void work(ll s) { if(s>inf) return ; ll t1= s*10+4; ll t2 = s*10+7; a[++nf]=t1;a[++nf]=t2; work(t1); work(t2); } void get1(long long d,long long x,long long y,long long z){ d--; bool p[20]; for (int i=1;i<=z;i++) p[i]=true; for (int i=1;i<=z;i++){ int j=d/(x/y); x/=y;d%=x;y--; if (i==z){for (int k=1;k<=z;k++) if (p[k]) g[i]=k;} else{for (int k=1,s=0;k<=z;k++){if (p[k]) s++;if (s-1==j){p[k]=false;g[i]=k;break;}}} } } void get(ll d,ll x,ll y,ll z) { d--;bool p[20]; CLR(p,1); f(i,1,z) { int j = d/(x/y); x/=y; d%=x;y--; if(i==z) { f(k,1,z) { if(p[k]) g[i]=k; } } else { int s =0; f(k,1,z) { if(p[k]) s++; if(s-1==j) { p[k]=false; g[i]=k; break; } } } } } bool pan(long long x){ while (x){ if (x%10!=7&&x%10!=4) return false; x/=10; } return true; } int main() { LOACL cin>>n>>k; work(0);sort(a+1,a+nf+1); while(p<k)++s,p*=s; if(s>n){cout<<-1<<endl;return 0;} for (long long i=1;i<=nf;i++)if(a[i]<=n-s) ans++; get(k,p,s,s); //f(i,1,100) cout<<g[i]<<" ";cout<<endl; for (long long i=1;i<=s;i++) if (pan(i+n-s)&&pan(g[i]+n-s)) ans++; cout<<ans<<endl; return 0; }
#include<bits/stdc++.h> using namespace std; #define LOACL freopen("in","r",stdin);\ freopen("out","w",stdout); const int inf = 987654321; const int sz = 1e6 + 5; const int mod = 1e9 + 7; const int sqrtn = 300; #define add(u,v,w) (e[++tot]=(edge){v,head[u],1},head[u]=tot;) #define f(i,l,r) for(int i=(int)l;i<=(int)r;++i) #define g(i,l,r) for(int i=(int)l;i>=(int)r;--i) #define CLR(arr,val) memset(arr,val,sizeof(arr)) typedef long long ll; ll n ,k,x,y,p=1,s=1,ans; ll a[sz],nf,g[110] ; void work(ll s) { if(s>inf) return ; ll t1= s*10+4; ll t2 = s*10+7; a[++nf]=t1;a[++nf]=t2; work(t1); work(t2); } void get1(long long d,long long x,long long y,long long z){ d--; bool p[20]; for (int i=1;i<=z;i++) p[i]=true; for (int i=1;i<=z;i++){ int j=d/(x/y); x/=y;d%=x;y--; if (i==z){for (int k=1;k<=z;k++) if (p[k]) g[i]=k;} else{for (int k=1,s=0;k<=z;k++){if (p[k]) s++;if (s-1==j){p[k]=false;g[i]=k;break;}}} } } void get(ll d,ll x,ll y,ll z) { d--;bool p[20]; CLR(p,1); f(i,1,z) { int j = d/(x/y); x/=y; d%=x;y--; if(i==z) { f(k,1,z) { if(p[k]) g[i]=k; } } else { int s =0; f(k,1,z) { if(p[k]) s++; if(s-1==j) { p[k]=false; g[i]=k; break; } } } } } bool pan(long long x){ while (x){ if (x%10!=7&&x%10!=4) return false; x/=10; } return true; } int main() { LOACL cin>>n>>k; work(0);sort(a+1,a+nf+1); while(p<k)++s,p*=s; if(s>n){cout<<-1<<endl;return 0;} for (long long i=1;i<=nf;i++)if(a[i]<=n-s) ans++; get(k,p,s,s); //f(i,1,100) cout<<g[i]<<" ";cout<<endl; for (long long i=1;i<=s;i++) if (pan(i+n-s)&&pan(g[i]+n-s)) ans++; cout<<ans<<endl; return 0; }
不摸着石头过河,难道要在温柔乡睡到天昏地暗。