
----51nod
欣君
追寻那如樱花般的绚烂
展开
-
51nod 1001 数组中和等于K的数对
{优快云:CODE:1965101}原创 2016-11-03 18:36:50 · 283 阅读 · 0 评论 -
51nod 1002 数塔取数问题
#include using namespace std;int a[550][550];int main(){ int n,i,j; while(cin>>n) { for(i=1;i<=n;i++) { for(j=1;j<=i;j++) scanf("%d",&a[i][j]); } for(i=n-1;i>=1;i--) { for原创 2016-11-03 19:51:28 · 250 阅读 · 0 评论 -
51nod 1003 阶乘后面0的数量
#include using namespace std;int main(){ int n,ans; while(cin>>n) { ans=0; while(n) { n/=5; ans+=n; } cout<<ans<<endl; }}原创 2016-11-03 19:52:33 · 246 阅读 · 0 评论 -
51nod 1004 n^n的末位数字
#include using namespace std;int mod=10;int powmod(int x,int p){ int ret=1; while(p) { if(p&1) ret=ret*x%mod; x=x*x%mod; p>>=1; } return ret;}int main(){ int n; while(cin>>n)原创 2016-11-03 19:53:15 · 272 阅读 · 0 评论 -
51nod 1005 大数加法
#include using namespace std;string sum(string s1,string s2){ int i,laz=0; string ret=string(10005,'0'); for(i=10005-1;i>=0;i--) { ret[i]=s1[i]+s2[i]-'0'+laz; if(ret[i]>'9') { ret[i]-原创 2016-11-03 19:53:49 · 278 阅读 · 0 评论 -
51nod 1006 最长公共子序列Lcs
#include using namespace std;int dp[1010][1010];int main(){ int i,j,cnt; char ans[1010]; string a,b; while(cin>>a>>b) { memset(dp,0,sizeof(dp)); for(i=1;i<=a.length();i++) { for(j=原创 2016-11-03 19:54:24 · 320 阅读 · 0 评论 -
51nod 1007 正整数分组
#include using namespace std;int dp[110][10010],a[110];int main(){ int n,i,j,sum,ans; while(cin>>n) { sum=0; for(i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; } memset(dp,0,si原创 2016-11-03 19:54:55 · 307 阅读 · 0 评论 -
51nod 1008 N的阶乘 mod P
#include using namespace std;int main(){ long long n,p,ans,i; while(cin>>n>>p) { ans=1; for(i=1;i<=n;i++) ans=ans*i%p; cout<<ans<<endl; }}原创 2016-11-03 19:55:46 · 830 阅读 · 0 评论 -
51nod 1009 数字1的数量
#include using namespace std;long long dp[20][20],digit[20];long long dfs(int pos ,int sum,int num,int zero,int limit){ if(pos<0) return sum; if(!limit&&dp[pos][sum]!=-1&&!zero) return dp[原创 2016-11-03 19:56:55 · 313 阅读 · 0 评论 -
51nod 1010 只包含因子2 3 5的数
#include using namespace std;long long limit=(long long)1<<60;set st;set ::iterator it;int main(){ long long T,n; st.insert(2); st.insert(3); st.insert(5); for(it=st.begin();*it<limit;it+原创 2016-11-03 19:57:27 · 242 阅读 · 0 评论 -
51nod 1011 最大公约数GCD
#include using namespace std;long long gcd(long long a,long long b){ if(a%b) return gcd(b,a%b); else return b;}int main(){ long long a,b; while(cin>>a>>b) { cout<<gcd(a,b)<<endl; }原创 2016-11-03 19:57:59 · 280 阅读 · 0 评论 -
51nod 1012 最小公倍数LCM
#include using namespace std;long long gcd(long long a,long long b){ if(a%b) return gcd(b,a%b); else return b;}int main(){ long long a,b; while(cin>>a>>b) { cout<<a/gcd(a,b)*b<<endl原创 2016-11-03 19:59:52 · 254 阅读 · 0 评论 -
51nod 1013 3的幂的和
#include using namespace std;long long mod=1e9+7;long long powmod(long long x,long long p){ long long ret=1; while(p) { if(p&1) ret=ret*x%mod; x=x*x%mod; p>>=1; } return ret;}i原创 2016-11-03 20:00:37 · 221 阅读 · 0 评论 -
51nod 1014 X^2 Mod P
#include using namespace std;int main(){ long long p,a,i,flag; while(cin>>p>>a) { flag=1; for(i=1;i<=p;i++) { if(i*i%p==a) { if(!flag) printf(" "); flag=0; printf("原创 2016-11-03 20:01:22 · 595 阅读 · 0 评论 -
51nod 1015 水仙花数
#include using namespace std;int arr[5]={153,370,371,407,1634};int main(){ int n; while(cin>>n) { cout<<arr[lower_bound(arr,arr+5,n)-arr]; }}原创 2016-11-03 20:01:51 · 278 阅读 · 0 评论 -
1016 水仙花数 V2
#include using namespace std;string narcissus[89]={"0","1","2","3","4","5","6","7","8","9","153","370","371","407","1634","8208","9474","54748","92727","93084","548834","1741725","4210818","9800817原创 2016-11-03 20:02:28 · 299 阅读 · 0 评论 -
51nod 1018 排序
#include using namespace std;int a[50050];int main(){ int n,i; while(cin>>n) { for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); for(i=0;i<n;i++) printf("%d\n",a[i]); }}原创 2016-11-03 20:02:57 · 234 阅读 · 0 评论 -
51nod 1019 逆序数
#include using namespace std;int a[50500];int ans;void merge(int lef,int rig){ if(lef==rig) return; if(lef==rig-1) { if(a[lef]>a[rig]) ans++; return; } int mid,i; mid=(lef+rig)>>原创 2016-11-03 20:03:22 · 214 阅读 · 0 评论 -
51nod 1021 石子归并
#include using namespace std;int a[1010],sum[1010],dp[1010][1010];int dfs(int st,int ed){ if(st==ed) return 0; if(dp[st][ed]!=-1) return dp[st][ed]; int i,ret=1<<30; for(i=st;i<ed;i++)原创 2016-11-03 20:04:05 · 159 阅读 · 0 评论 -
51nod 1022 石子归并 V2
#include using namespace std;int n,a[1010],sum[1010],dp[1010][1010],bs[1010][1010];int calsum(int st,int ed){ if(ed>=st) return sum[ed]-sum[st-1]; else return sum[n]-sum[st-1]+sum[ed]; }原创 2016-11-03 20:04:43 · 332 阅读 · 0 评论 -
51nod 1024 矩阵中不重复的元素
#include using namespace std;set st[110];int fa[110],mi[110];int main(){ int i,j,n,m,a,b,ans,tmp; memset(fa,0,sizeof(fa)); for(i=2;i<=100;i++) { if(fa[i]) continue; for(j=1,tmp=i;tmp原创 2016-11-03 20:05:06 · 209 阅读 · 0 评论 -
51nod 1027 大数乘法
#include using namespace std;string multi(string a,string b){ int arr[2020],i,j; memset(arr,0,sizeof(arr)); reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); for(i=0;i<a.length();i++)原创 2016-11-03 20:05:32 · 202 阅读 · 0 评论 -
51nod 1031 骨牌覆盖
#include using namespace std;long long mod=1e9+7;long long f[1010];int main(){ long long i,n; f[1]=1; f[2]=2; for(i=3;i<=1000;i++) { f[i]=(f[i-1]+f[i-2])%mod; } while(cin>>n) { prin原创 2016-11-03 20:06:02 · 188 阅读 · 0 评论 -
51nod 1035 最长的循环节
#include using namespace std;map mp;int ans[1100];int main(){ int x,rem,len,n,mx,cnt; mx=-1; for(x=1;x<=1000;x++) { mp.clear(); for(rem=10,cnt=1;;cnt++) { if(mp[rem]) { len=原创 2016-11-03 20:06:32 · 213 阅读 · 0 评论 -
51nod 1042 数字0-9的数量
#include using namespace std;long long dp[20][20],digit[20];long long dfs(int pos ,int sum,int num,int zero,int limit){ if(pos<0) return sum; if(!limit&&dp[pos][sum]!=-1&&!zero) return dp[原创 2016-11-03 20:06:54 · 240 阅读 · 0 评论 -
51nod 1043 幸运号码
#include using namespace std;const long long mod=1e9+7;long long fir[10100],sec[10100];int main(){ long long n,i,j,k,ans; while(cin>>n) { memset(fir,0,sizeof(fir)); memset(sec,0,sizeof(s原创 2016-11-03 20:07:23 · 220 阅读 · 0 评论 -
51nod 1046 A^B Mod C
#include using namespace std;long long powmod(long long x,long long p,long long mod){ long long ret=1; while(p) { if(p&1) ret=ret*x%mod; x=x*x%mod; p>>=1; } return ret;}int main(原创 2016-11-03 20:07:53 · 220 阅读 · 0 评论 -
51nod 1503 猪和回文
dp[step][x1][x2]代表从起点、终点分别走了step步,从起点走到了(x1,step-x1),从终点走到了(x2,n+m-2-x2-step)时,前后路径对称的总数。注意特判 mz[0][0]!=mz[n-1][m-1] 的情况,我被坑死了。。。。。#include using namespace std;const long long mod=1e9+7;long l原创 2016-11-04 00:54:23 · 303 阅读 · 0 评论 -
51nod 1417 天堂里的游戏
#include using namespace std;long long gcd(long long a,long long b){ return a%b?gcd(b,a%b):b;}int main(){ long long T,a,b,tmp,zi,mu; cin>>T; while(T--) { scanf("%lld%lld",&a,&b); zi=a原创 2016-11-04 00:57:41 · 438 阅读 · 0 评论 -
51nod 1418 放球游戏
#include using namespace std;int main(){ string str; int T,ans,sum[5],i,j; cin>>T; while(T--) { cin>>str; ans=0; memset(sum,0,sizeof(sum)); for(i=0;i<str.length();i++) { for(j=0;原创 2016-11-04 00:58:41 · 215 阅读 · 0 评论 -
51nod 1416 两点
#include using namespace std;char mz[55][55];int go[2][4]={{1,0,-1,0},{0,1,0,-1}};int vis[55][55];int flag,n,m;void dfs(int x,int y,int xfro,int yfro){ vis[x][y]++; int i,tmpx,tmpy; for(i=原创 2016-11-04 00:58:53 · 248 阅读 · 0 评论 -
51nod 1414 冰雕
#include using namespace std;long long a[20020],fac[20020];map > sum;int main(){ long long n,i,j,facsum,ans; while(cin>>n) { for(i=0;i<n;i++) { scanf("%lld",&a[i]); } facsum=0; f原创 2016-11-03 21:11:52 · 190 阅读 · 0 评论 -
51nod 1413 权势二进制
#include using namespace std;int main(){ string str; int ans,i; while(cin>>str) { ans=0; for(i=0;i<str.length();i++) { ans=max(ans,str[i]-'0'); } ans=max(ans,1); printf("%d\n",a原创 2016-11-04 00:59:14 · 186 阅读 · 0 评论 -
51nod 1405 树的距离之和
#include using namespace std;const int MAXN=100100;vector eg[MAXN];long long sonsum[MAXN],dp[MAXN];long long n;long long dfs1(int x,int fa){ long long ret=0; sonsum[x]=1; for(int i=0;i<eg[原创 2016-11-03 21:11:14 · 169 阅读 · 0 评论 -
51nod 1402 最大值
#include using namespace std;int arr[100100];int main(){ int T,n,m,i,ans,x,t; cin>>T; while(T--) { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) arr[i]=i-1; for(i=0;i<m;i++) { scanf("原创 2016-11-04 00:59:31 · 244 阅读 · 0 评论 -
51nod 1396 还是01串
#include using namespace std;string str;int sum1[1000100],sum0[1000100];int main(){ int i,s1,s0,ans; while(cin>>str) { sum1[0]=(str[0]-'0'?1:0); sum0[0]=(str[0]-'0'?0:1); for(i=1;i<str原创 2016-11-04 00:59:51 · 244 阅读 · 0 评论 -
51nod 1393 0和1相等串
#include using namespace std;map mp;int main(){ string str; int now,i,ans; while(cin>>str) { mp[0]=1; ans=0; now=0; for(i=0;i<str.length();i++) { if(str[i]=='0') now--; e原创 2016-11-04 01:00:12 · 533 阅读 · 0 评论 -
51nod 1391 01串
#include using namespace std;map mp;map ::iterator it;int sum[1001000],lef[1001000],rig[1001000];string str;int main(){ int n,i,ans; while(cin>>str) { n=str.length(); str='#'+str; su原创 2016-11-03 21:09:54 · 219 阅读 · 0 评论 -
51nod 1384 全排列
#include using namespace std;char str[15];int num[15],len;void dfs(int deep){ if(deep==len) { printf("%s\n",str); return; } for(int i=0;i<=9;i++) { if(num[i]) { num[i]--; str原创 2016-11-04 01:01:13 · 190 阅读 · 0 评论 -
51nod 1381 硬币游戏
#include using namespace std;int main(){ long long T,r; cin>>T; while(T--) { scanf("%lld",&r); printf("%lld\n",2*r); }}原创 2016-11-04 01:01:57 · 208 阅读 · 0 评论