• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

陈体胖

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

算法笔记练习 5.1 简单数学 问题 B: 反序数

算法笔记练习 题解合集

题目链接

题目

题目描述
设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值

输入
程序无任何输入数据。

输出
输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。

思路

  1. 用i遍历 1000 到 1111 的范围,若有符合条件的,输出;
  2. 把四位数i的四个数位上数字拆解到长度为 4 的数组中;
  3. 把9 * i的四个数位上数字以相反的方向拆解到另一个长度为 4 的数组中;
  4. 比较两个数组,若完全相同则符合条件。

代码

#include <stdio.h>

// 若四位数 a 是 b 的反序数,返回 1,否则返回 0 
int isReverse(int a, int b){
	int i;
	int ret = 1;
	int da[4] = {0};
	int db[4] = {0}; 
	for (i = 0; i < 4; ++i){
		da[i] = a % 10;
		db[4-i-1] = b % 10; 
		a /= 10;
		b /= 10;
	}
	for (i = 0; i < 4; ++i){
		if (da[i] != db[i])
			ret = 0; 
	} 
	return ret;
} 

int main() {
	int i;
	for (i = 1000; i <= 1111; ++i) {
		if (isReverse(i, i * 9))
			printf("%d\n", i);
	}
	return 0;
} 

posted on 2020-03-29 22:05  陈体胖  阅读(215)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3