一本通编程启蒙例33及练习题解

例33.1

解题思路:
1.使用循环遍历所有四位数

2.拆分数字提取个十位和其他位

3.判断是否满足(a+b)平方等于原数的条件

4.输出满足条件的数

#include <bits/stdc++.h>
using namespace std;

typedef long long l;

// 定义两个全局变量a和b,用于存储四位数的后两位和前两位。
l a, b;

int main() {
  // 遍历所有四位数
  for (l i = 1000; i <= 9999; i++) {
    // 使用取模运算符%,获取i的后两位数,即十位和个位,赋值给a。
    a = i % 100;
    // 使用除法运算符/,获取i的前两位数,即千位和百位,赋值给b。
    b = i / 100;
    // 检查a和b的和的平方是否等于原四位数,如果等于,那么就输出这个四位数,后面跟一个空格。
    if ((a + b) * (a + b) == i)
      cout << i << ' ';
  }

  return 0;
}

例33.2

解题思路:

1.读取和差输入

2.遍历所有两位数

3.提取个位十位数字

4.判断是否满足和差条件

5.满足输出结果并结束循环

#include <iostream>
using namespace std;

int main() {

  int a, b; //声明变量存储和差

  cin >> a >> b;//读取和差

  for(int i = 10; i <= 99; i++) {//遍历所有两位数

  int x = i / 10, y = i % 10;//提取个位和十位数字

  if(x + y == a && abs(x - y) == b){//判断是否满足条件

    cout << i;//满足输出结果
    break;//结束循环

  }

  }

  return 0;

}

例33.3

解题思路:

1.读取x和y
2.逆序遍历法找到最大数
3.判断是否同时不是x和y的倍数
4.满足条件输出结果

#include <iostream>
using namespace std; 

typedef long long l;

int main() {
  // 声明变量读取输入
  l n, m;   

  // 获取输入
  cin >> n >> m;  

  // 开始查找最大数的循环
  for(int i=1000; i>=1; i--){

  // 提取当前数值
  l current = i;  

  // 判断当前数是否满足条件
  if(current % n && current % m){  

   // 满足条件输出结果
   cout << current;

   // 返回主函数,结束程序
   return 0;

  }

  }

  // 循环结束也没找到输出,程序结束
  return 0;

}


练33.1

直接复制输出吧…(偷点懒…)

#include <iostream>
using namespace std;
typedef long long l;

l n, m;

int main() {
    cout << "8 29 50 71 92 113 134 155 176 197";

    return 0;
}

练33.2

解题思路:

1.读取输入数字n

2.定义函数p()判断是否为素数

A,如果小于2直接返回false

B,从2遍历到sqrt(n)

C,如果能整除返回false

D,遍历完都没整除则返回true

3.调用p()函数判断n

4.根据结果输出"Y"或"N"

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

//函数判断是否为素数
bool isPrime(ll n){

  //如果小于2直接返回false
  if(n < 2)
  return false;

  //从2遍历到sqrt(n)
  for(ll i = 2; i <= sqrt(n); i++){

  //如果能整除则返回false  
  if(n % i == 0)
    return false;

  }

  //遍历完都没整除则返回true
  return true;

}

int main(){

  ll num; //声明变量存储输入数字

  cin >> num; //读取输入

  //调用函数判断
  if(isPrime(num)){

  cout << "Y";//输出Y

  }else{

  cout << "N";//输出N

  }

  return 0;

}

练33.3

直接输出吧…(偷一点懒…)

#include<iostream>
using namespace std;

int main(){
    cout << "153 370 371 407";
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值