首页 > 其他分享 >五颜六色(字符串)

五颜六色(字符串)

时间:2024-11-28 13:30:33浏览次数:7  
标签:十六进制 颜色 五颜六色 RGB 字符串 输入 255

题目描述
RGB 是一种颜色模型,它通过红色、绿色和蓝色的组合来定义颜色。RGB 元组由指定每种颜色强度的三个数字组成。因为它对每种颜色使用 8 位( 0 或 1 ),所以每个强度可以转换为最多两位的十六进制数。
每种颜色有 256 种可能的色调,因为 11111111 (或十六进制 ff )对应于十进制的 255 ,加上数字 000 。三种原色的所有 256 种可能的色调组合得到 256 立方,或超过 1600 万可能的颜色。
编写一个函数,采用 RGB 或十六进制的颜色并返回相反的颜色。如果它在一个 RGB 元组中接收三个整数,它应该返回一个具有等效十六进制表示法的字符串。如果它接受一个十六进制的字符串,它应该返回一个字符串,其中包含对应于 RGB 的三个整数,每个数中间用逗号隔开。

输入输出格式
输入格式
有两种输入方式
第一种:
第一行有 R ,表示红色的值。
第二行有 G ,表示绿色的值。
第二行有 B ,表示蓝色的值。

第二种:
输入一行能标识颜色的字符串。
比如: #500d01 。
输出格式
如果接收的是三个整数那么输出 16 进制字符串的数据,如 #96324c 。
如果接收的是一个字符串那么返回一个元组。

输入输出样例1
输入
150
50
76
输出
#96324c

输入输出样例2
输入
15
59
122
输出
#0f3b7a

输入输出样例3
输入
#500d01
输出
80,13,1

说明提示
黑色被定义为没有颜色,或 RGB ( 0 , 0 , 0 ),而白色被定义为全强度的所有颜色,或 RGB ( 255 , 255 , 255 )。当所有颜色的强度相同且某个值介于 0 和 255 之间时,生成的颜色为较深或较浅的灰色。

#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
using namespace std;

int main() {
    string s, p = "#", t;
    cin >> s;
    int a, b, c;
    int len = s.length();
    
    if (s[0] != '#') {
        // 如果输入的是十进制颜色值
        cin >> b >> c;
        a = stoi(s);  // 使用 stoi 转换十进制的数字
        stringstream ss;
        ss << hex << setw(2) << setfill('0') << a;
        p += ss.str();

        ss.str("");  // 清空stringstream
        ss << hex << setw(2) << setfill('0') << b;
        p += ss.str();

        ss.str("");  // 清空stringstream
        ss << hex << setw(2) << setfill('0') << c;
        p += ss.str();

        cout << p;
    } else {
        // 如果输入的是十六进制颜色值
        t = s.substr(1, 2);  // 获取红色部分
        a = stoi(t, nullptr, 16);
        t = s.substr(3, 2);  // 获取绿色部分
        b = stoi(t, nullptr, 16);
        t = s.substr(5, 2);  // 获取蓝色部分
        c = stoi(t, nullptr, 16);
        
        cout << a << "," << b << "," << c;
    }
    
    return 0;
}

 

标签:十六进制,颜色,五颜六色,RGB,字符串,输入,255
From: https://blog.csdn.net/2301_80470126/article/details/144083792

相关文章

  • shell(2)永久环境变量和字符串显位
    ​声明!学习视频来自B站up主泷羽sec有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页泷羽se......
  • 6-4 字符串排序
    本题将5个字符串从小到大排序后输出(用指针数组实现)。函数接口定义:voidfsort(char*color[],intn);其中color为指针数组首地址,n是字符串个数。裁判测试程序样例:#include<stdio.h>#include<string.h>voidfsort(char*color[],intn);intmain(void){in......
  • 【C++习题】14.滑动窗口_找到字符串中所有字母异位词
    文章目录题目链接:题目描述:解法C++算法代码:图解题目链接:438.找到字符串中所有字母异位词题目描述:解法暴力解法:字母排序后运用滑动窗口解题。滑动窗口+哈希表:我们可以优化一下,比如下面cba到bae,实际上只是把c去掉,加上一个e,没必要三个全删。left=......
  • 字符串1
    一、字符串的基本概念字符串的存储结构在C语言中,字符串本质上是字符数组,并以空字符\0结尾。存储特点:每个字符占一个字节:在ASCII编码中,一个字符(如A或a)占用1个字节。一个字符串的长度是字符个数加1(空字符\0)。连续存储:字符数组中的每个字符都连续存储在......
  • 字符串
    字符串是计算机编程中表示文本数据的一种基本数据类型,在C语言中,字符串是以字符数组的形式实现的,并且每个字符串都以空字符\0结尾,这个空字符标志着字符串的结束。下面从基础到深入讲解字符串的相关知识点:1.字符串的定义与表示字符串在C语言中使用字符数组表示,例如:charstr[......
  • 代码随想录算法训练营第十天(LeetCode232.用栈实现队列;LeetCode225.用队列实现栈;LeetCo
    LeetCode232.用栈实现队列题目链接:用栈实现队列题目链接思路队列是先进先出,栈是先进后出,为了能够让栈可以模拟队列的先进先出,我们设置两个栈,一个栈作为入栈,一个栈作为出栈,我们在入栈存储完数据后,将入栈中的数据全部存储到出栈中,那么从出栈中弹出来的数据就是先进先出的......
  • PHP 带中文字符串截取
    PHP中带有中文字符串的截取可以直接使用substr方法,无需使用mb_substr。<?php$s='<?xmlversion="1.0"?><S:Envelopexmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:queryTablesResponsexmlns:ns2="http://web.......
  • js中在将字符串数字转为数字时,使用哪种方式更安全
    在JavaScript中,将字符串数字转换为数字时,有几种常见的方法,但每种方法都有其适用场景和潜在的风险。为了确保转换的安全性和准确性,建议使用以下方法:1.Number构造函数Number构造函数是最直接和安全的方法之一,它可以处理各种数字格式,包括整数、浮点数和科学计数法。conststr......
  • Day39--连接两个字符串
    Day39--连接两个字符串在Java中,要连接两个字符串,可以使用+运算符或者String类的concat方法。使用+运算符示例代码如下:StringfirstName="John";StringlastName="Doe";System.out.println(firstName+lastName);在这个例子中,firstName和lastName通过+运算符......
  • 【leetcode100】找到字符串中所有字母异位词
    1、题目描述给定两个字符串s和p,找到s中所有p的异位词异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。示例1:输入:s="cbaebabacd",p="abc"输出:[0,6]解释:起始索引等于0的子串是"cba",它是"abc"的异位词。起始索引等于6的子串是......