标签:
7744问题(输出所有形如aabb的4位完全平方数)
方法1:
#include<stdio.h> #include<math.h> int main (){ for(int a=1;a<=9;a++){ for(int b=0;b<=9;b++){ int n = a*1100+b*11; int m = floor(sqrt(n)+0.5); if(m*m == n) printf("%d\n",n); } } return 0; }
方法2:
#include<stdio.h> #include<math.h> int main (){ for(int x=1;;x++){ int n = x*x; if(n < 1000)continue; if(n > 9999)break; if(n/1000 == n/100%10 && n/10%100%10 == n%10) printf("%d\n",n); } return 0; }
开灯问题:
n盏灯,k个人
#include<stdio.h> #include<string.h> int a[1000]; int main (){ int n,k,first = 1; memset(a,0,sizeof(a)); scanf("%d%d",&n,&k); for(int i=1;i<=k;i++){ for(int j=1;j<=n;j++){ if(j%i==0)a[j]=!a[j]; } } for(int i=1;i<=n;i++){ if(a[i])printf("%d ",i); } return 0; }
生成元
给定n,求最小生成元(如果x加上x的各位数字之和为y,则称x是y的生成元)
#include<stdio.h> #include<string.h> int a[100005]; int main (){ int T,n; memset(a,0,sizeof(a)); for(int m=1;m<3000;m++){ int x = m,y = m; while(x>0){ y+=x%10; x/=10; } if(a[y] == 0 || a[y] > m)a[y]=m; } scanf("%d",&T); while(T--){ scanf("%d",&n); printf("%d\n",a[n]); } return 0; }
生成1~n的排列
#include<stdio.h> #include<string.h> int a[100]; void f(int n,int* a,int cur){ if(n==cur){ for(int i=0;i<n;i++){ printf("%d",a[i]); } printf("\n"); } else for(int i=1;i<=n;i++){ int ok = 1; for(int j=0;j<cur;j++){ if(a[j]==i) ok = 0; } if(ok){ a[cur]=i; f(n,a,cur+1); } } } int main (){ f(3,a,0); return 0; }
n皇后问题解的个数:
#include<stdio.h> #include<string.h> int a[100]; long total=0; int n; void search(int cur){ if(cur==n)total++; else for(int i=0;i<n;i++){ int ok=1; a[cur]=i; for(int j=0;j<cur;j++){ if(a[cur]==a[j] || cur-a[cur]==j-a[j] || cur+a[cur]==j+a[j]){ ok=0; break; } } if(ok)search(cur+1); } } int main (){ scanf("%d",&n); search(0); printf("%ld\n",total); return 0; }
tip:
printf("%5d",x); //%5d表示按照5位数打印,不足5位在前面补空格
scanf("%s",s); 遇到空白字符会停下来
printf("%.1f",x); 保留小数点后一位
标签:
原文地址:http://www.cnblogs.com/yzwhykd/p/5868020.html