当前位置:   article > 正文

ZISUOJ 第一阶段作业列表(Problem 0-9以及几道无编号题)

ZISUOJ 第一阶段作业列表(Problem 0-9以及几道无编号题)

说明:

见前两篇博客

题目列表:

 问题 0: 平面分割

 

参考题解

  1. #include <stdio.h>
  2. int main(){
  3. //问题 0: 平面分割
  4. int m,n,p;scanf("%d",&m);
  5. while(m--){
  6. scanf("%d %d",&n,&p);
  7. int ans = 2*p;
  8. for(int i = p+1;i<=n;i++) ans+=i;
  9. printf("%d\n",ans);
  10. }
  11. return 0;
  12. }

问题 1: 数字反转

 

参考题解:

  1. #include <stdio.h>
  2. #include <string.h>
  3. char s[1005];
  4. int main(){
  5. //问题 1: 数字反转
  6. scanf("%s",&s[0]);
  7. int type = 0;
  8. if(s[0]=='-'){
  9. printf("-");
  10. for(int i = strlen(s)-1;i>=1;i--){
  11. if(!type&&s[i]=='0') continue;
  12. else{
  13. type = 1;
  14. printf("%c",s[i]);
  15. }
  16. }
  17. }else{
  18. for(int i = strlen(s)-1;i>=0;i--){
  19. if(!type&&s[i]=='0') continue;
  20. else{
  21. type = 1;
  22. printf("%c",s[i]);
  23. }
  24. }
  25. }
  26. return 0;
  27. }

问题 2: 最大公约数和最小公倍数

 

参考题解1:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 2: 最大公约数和最小公倍数
  4. int m,n;scanf("%d %d",&m,&n);
  5. int temp;
  6. if(m<n){
  7. temp = m;
  8. m = n;
  9. n = temp;
  10. }
  11. int tempm = m,tempn = n;
  12. while(tempm%tempn!=0){
  13. temp = tempm;
  14. tempm = tempn;
  15. tempn = temp%tempn;
  16. }
  17. printf("%d %d",tempn,(m/tempn)*(n/tempn)*tempn);
  18. return 0;
  19. }

参考题解2:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. //问题 2: 最大公约数和最小公倍数
  5. int m,n;cin >> m >> n;
  6. cout << __gcd(m,n) << ' ' << (m/__gcd(m,n))*(n/__gcd(m,n))*__gcd(m,n);
  7. return 0;
  8. }

问题 3: 数字统计

 

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 3: 数字统计
  4. int l,r;scanf("%d %d",&l,&r);
  5. int ans = 0,temp;
  6. for(int i = l;i<=r;i++){
  7. temp = i;
  8. while(temp!=0){
  9. if(temp%10==2) ans++;
  10. temp/=10;
  11. }
  12. }
  13. printf("%d",ans);
  14. return 0;
  15. }

问题 4: 分数序列求和

 

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 4: 分数序列求和
  4. double a = 2,b = 1,ans = 0,temp;
  5. int n;scanf("%d",&n);
  6. for(int i = 1;i<=n;i++){
  7. ans+=a/b;
  8. temp=a;
  9. a+=b;
  10. b=temp;
  11. }
  12. printf("%.2lf",ans);
  13. return 0;
  14. }

问题 5: 增增减减

 

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 5: 增增减减
  4. int a,b;scanf("%d %d",&a,&b);
  5. printf("%d",(a-1)*(b+1));
  6. return 0;
  7. }

问题 6: 提现手续费

 

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 6: 提现手续费
  4. int n;scanf("%d",&n);
  5. if(n<=100) printf("0.10");
  6. else printf("%.2lf",0.001*n);
  7. return 0;
  8. }

问题 7: 平均数

 

 参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 7: 平均数
  4. int n,temp;double ans;
  5. while(~scanf("%d",&n)){
  6. ans = 0;
  7. for(int i = 1;i<=n;i++){
  8. scanf("%d",&temp);
  9. ans+=temp;
  10. }
  11. printf("%.3lf\n",ans/n);
  12. }
  13. return 0;
  14. }

问题 8: 逆序输出

 

参考题解:

  1. #include <stdio.h>
  2. int a[11];
  3. int main(){
  4. //问题 8: 逆序输出
  5. for(int i = 1;i<=10;i++) scanf("%d",&a[i]);
  6. for(int i = 10;i>=1;i--){
  7. if(i==10) printf("%d",a[i]);
  8. else printf(" %d",a[i]);
  9. }
  10. return 0;
  11. }

问题 9: 数组逆序重存放

 

参考题解:

  1. #include <stdio.h>
  2. int a[105];
  3. int main(){
  4. //问题 9: 数组逆序重存放
  5. int n;scanf("%d",&n);
  6. for(int i = 1;i<=n;i++) scanf("%d",&a[i]);
  7. for(int i = n;i>=1;i--){
  8. if(i==n) printf("%d",a[i]);
  9. else printf(" %d",a[i]);
  10. }
  11. return 0;
  12. }

问题 : 插队

 

参考题解:

  1. #include <stdio.h>
  2. int a[11];
  3. int main(){
  4. //问题 : 插队
  5. for(int i = 1;i<=9;i++) scanf("%d",&a[i]);
  6. int temp;scanf("%d",&temp);
  7. int idx;
  8. for(int i = 1;i<=9;i++) if(a[i]>=temp){idx=i;break;}
  9. for(int i = 10;i>=idx+1;i--) a[i] = a[i-1];
  10. a[idx] = temp;
  11. for(int i = 1;i<=10;i++) printf("%d\n",a[i]);
  12. return 0;
  13. }

问题 : 冒泡法排序

 

参考题解:

  1. #include <stdio.h>
  2. int a[11];
  3. int main(){
  4. //问题 : 冒泡法排序
  5. for(int i = 1;i<=10;i++) scanf("%d",&a[i]);
  6. int temp;
  7. for(int i = 1;i<=9;i++){
  8. for(int j = 1;j<=10-i;j++){
  9. if(a[j]>a[j+1]){
  10. temp = a[j];
  11. a[j] = a[j+1];
  12. a[j+1] = temp;
  13. }
  14. }
  15. }
  16. for(int i = 1;i<=10;i++) printf("%d\n",a[i]);
  17. return 0;
  18. }

问题 : 筛法求素数

 

参考题解:

  1. #include <stdio.h>
  2. int a[1005];
  3. int main(){
  4. //问题 : 筛法求素数
  5. int n;scanf("%d",&n);
  6. for(int i = 2;i<=n;i++) a[i] = i;
  7. for(int i = 2;i<=n;i++){
  8. for(int j = 2;j<i;j++){
  9. if(i%j==0) a[i] = 0;
  10. }
  11. }
  12. for(int i = 2;i<=n;i++) if(a[i]) printf("%d\n",a[i]);
  13. return 0;
  14. }

问题 : 嘉航的加密程序

 

参考题解:

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N int(1e5+5)
  4. char s[N];
  5. int main(){
  6. //问题 : 嘉航的加密程序
  7. int k;
  8. gets(s);
  9. scanf("%d",&k);
  10. int len = strlen(s);
  11. for(int i = 0;i<len;i++){
  12. if(s[i]>='a'&&s[i]<='z'){
  13. s[i] = 'a'+(s[i]-'a'+k%26)%26;
  14. }else if(s[i]>='A'&&s[i]<='Z'){
  15. s[i] = 'A'+(s[i]-'A'+k%26)%26;
  16. }else if(s[i]>='0'&&s[i]<='9'){
  17. s[i] = '0'+(s[i]-'0'+k%10)%10;
  18. }
  19. }
  20. printf("%s",s);
  21. return 0;
  22. }

问题 : 交替字符倒三角形

 

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 : 交替字符倒三角形
  4. int n;scanf("%d",&n);
  5. for(int i = 1;i<=n;i++){
  6. for(int j = 1;j<=i-1;j++) printf(" ");
  7. for(int j = 1;j<=2*(n+1-i)-1;j++){
  8. if(j%2==1) printf("S");
  9. else printf("T");
  10. }
  11. printf("\n");
  12. }
  13. return 0;
  14. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/426299
推荐阅读
相关标签
  

闽ICP备14008679号