Keda#P0008. 水仙花数1

该程序用于检查输入的三位整数是否符合水仙花数的定义,即百位、十位、个位的立方和等于原数。通过拆分数字并计算立方和来判断条件,输出结果为TRUE或FALSE。

题目描述

假设一个三位数 xx 的百位、十位、个位上的数字分别为a,b,ca,b,c,如果 a3+b3+c3a3+b3+c3 恰好等于 xx ,则称 xx 为水仙花数,如: 153153 就是一个水仙花数,13+53+33=1+125+27=15313+53+33=1+125+27=153。请编写程序判断一个三位正整数是否是水仙花数。

输入格式

输入只有一行,为一个三位整数。

输出格式

输出只有一行,为判断结果,TRUE 或者 FALSE

样例

输入
153

输出
TRUE

数据范围与提示

当然是 33 位的整数

代码实现:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int x, a, b, c;
	cin >> x;
	a = x / 100;拆百位
	b = (x % 100) / 10;//拆十位
	c = x % 10;//拆个位
	if((a * a * a + b * b * b + c * c * c) == x){//判断是否为水仙花数
		cout << "TRUE";
	}else{
		cout << "FALSE";
	}
	return 0;//完美的 return0 结尾
}

```markdown 题目重述 请编写代码,将 `keda.png` 图像作为水印添加到 MATLAB 内置图像 `cameraman.tif` 的右上角和左下角,并实现左下角水印具有一定透明度的效果。要求对 `keda.png` 进行裁剪以保留“辽宁科技大学”字样,转换为灰度图并调整大小适合作为水印。 给出答案(答案为带注释的代码块) ```matlab % 清除工作区 clear; clc; close all; % 读取基本图像(cameraman.tif) background = imread('cameraman.tif'); if size(background, 3) == 3 background = rgb2gray(background); % 转为灰度图(如果需要) end background = im2double(background); % 读取水印图像 keda.png watermark = imread('keda.png'); % 步骤1:裁剪图像,保留“辽宁科技大学”所在区域(假设红色框位置已知) % 根据实际图像调整裁剪坐标 [left, top, width, height] % 示例裁剪(需根据实际图片调整数值) cropped_watermark = imcrop(watermark, [50, 30, 180, 60]); % 手动调整 ROI % 步骤2:转为灰度图像 if size(cropped_watermark, 3) == 3 gray_watermark = rgb2gray(cropped_watermark); else gray_watermark = cropped_watermark; end % 步骤3:调整水印大小(例如 60x160) resized_watermark = imresize(gray_watermark, [60, 160]); % 归一化水印用于叠加 w_mask = im2double(resized_watermark); % 复制背景图像用于不同操作 output1 = background; output2 = background; output3 = background; % 获取背景图像尺寸 [rows_bg, cols_bg] = size(background); [rows_w, cols_w] = size(w_mask); % (1) 水印添加到右上角 start_row1 = 1; start_col1 = cols_bg - cols_w + 1; output1(start_row1:start_row1+rows_w-1, start_col1:start_col1+cols_w-1) = ... output1(start_row1:start_row1+rows_w-1, start_col1:start_col1+cols_w-1) .* (1 - w_mask) + w_mask; % (2) 水印添加到左下角 start_row2 = rows_bg - rows_w + 1; start_col2 = 1; output2(start_row2:start_row2+rows_w-1, start_col2:start_col2+cols_w-1) = ... output2(start_row2:start_row2+rows_w-1, start_col2:start_col2+cols_w-1) .* (1 - w_mask) + w_mask; % (3) 左下角水印 + 透明效果(通过降低权重实现) alpha = 0.5; % 透明度系 output3(start_row2:start_row2+rows_w-1, start_col2:start_col2+cols_w-1) = ... (1 - alpha) * output3(start_row2:start_row2+rows_w-1, start_col2:start_col2+cols_w-1) + ... alpha * w_mask; % 显示结果 figure; subplot(2,2,1); imshow(imread('keda.png')); title('原始水印图像(keda.png)'); subplot(2,2,2); imshow(output1); title('(1) 水印在右上角'); subplot(2,2,3); imshow(output2); title('(2) 水印在左下角'); subplot(2,2,4); imshow(output3); title('(3) 透明水印在左下角'); % 可选:保存结果 % imwrite(output1, 'output1_right_top.png'); % imwrite(output2, 'output2_left_bottom.png'); % imwrite(output3, 'output3_semi_transparent.png'); ``` 代码解析 1. 使用 `imread` 分别读取 `keda.png` 和 `cameraman.tif`。 2. 对 `keda.png` 进行裁剪、灰度化、缩放处理,生成适合的水印图像。 3. 将水印嵌入主图像的指定位置(右上角、左下角),通过像素级加权融合实现叠加。 4. 第三种情况使用透明度因子 `alpha` 控制水印融合强度,模拟半透明效果。 5. 最终显示四个子图:原图与三种叠加结果。 知识点(列出该代码中遇到的知识点) 1. **图像裁剪与预处理**:使用 `imcrop` 提取感兴趣区域,`rgb2gray` 转灰度,`imresize` 调整尺寸。 2. **图像叠加技术**:利用线性加权融合公式 $ I_{out} = \alpha \cdot W + (1 - \alpha) \cdot B $ 实现水印嵌入。 3. **MATLAB矩阵索引操作**:精准定位背景图像区域,将水印矩阵赋值到对应位置。 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值