首页 > 代码库 > C语言基础(一)
C语言基础(一)
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); 保留小数点后一位
C语言基础(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。