标签:表示 草稿 line mat for 次数 mst mask 整数
1
4
#include<cstdio> #include<iostream> #include<algorithm> #include<map> #include <math.h> #include<bits/stdc++.h> using namespace std; typedef long long ll; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} return x*f; } const int INF=0x3f3f3f3f; const int maxn=5e5; ll n; int p; void inint(){ cin>>n; } int main(){ inint(); for(int i=2;i<=1e9;i++){ ll o=pow(2,i)-2; if(n<=o){ p=i-1; break; } } cout<<p<<endl; while(p--){ int q=pow(2,p+1)-2+pow(2,p); if(n>q){ printf("7"); n-=pow(2,p+1); } else{ printf("4"); n-=pow(2,p); } } }
ac代码2;
#include<cstdio> #include<iostream> #include<algorithm> #include<map> #include <math.h> #include<bits/stdc++.h> using namespace std; typedef long long ll; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} return x*f; } const int INF=0x3f3f3f3f; const int maxn=5e5; ll n; int z; char b[maxn]; map<int,int>mp; void inint(){ cin>>n; } int main(){ inint(); int l; for(int i=2;i<=1e9;i++){ ll o=pow(2,i)-2; if(n<=o){ z=i-1; l=n-(pow(2,i-1)-2)-1; break; } } if(l==0){ for(int i=1;i<=z;i++){ printf("4"); } } else{ int p=l; int zz=1; while(p){ b[zz++]=p%2; p/=2; } int o=1; for(int i=z;i>=1;i--){ if(b[i]==1){ mp[o]=1; } o++; } for(int i=1;i<=z;i++){ if(mp[i]==1){ printf("7"); } else{ printf("4"); } } } }
标签:表示 草稿 line mat for 次数 mst mask 整数
原文地址:https://www.cnblogs.com/lipu123/p/12694695.html