洛谷day1

P1000

超级玛丽游戏 - 洛谷

getline基本用法:

在 C++ 中,getline() 是一个非常有用的函数,它用于从输入流中读取一行字符串。当你需要从标准输入(通常是键盘)获取一行文本时,你可以使用 getline(cin, s),其中 cin 是 C++ 中的标准输入流,s 是一个字符串变量,用于存储读取的行。

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s;
	cout<<"请输入一行文本:"<<endl;
	getline(cin,s);
	cout<<s<<endl;
}

解题步骤

第一步,获取print函数

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
string s[31];
int main(){
	for(int i=1;i<=22;i++)
		getline(cin,s[i]);
	for(int i=1;i<=22;i++)
		cout<<"cout<<\""<<s[i]<<"\"<<endl;"<<endl;
}

第二步,打印输出

#include<iostream>
using namespace std;
void print(){
	cout<<"                ********"<<endl;
    cout<<"               ************"<<endl;
    cout<<"               ####....#."<<endl;
    cout<<"             #..###.....##...."<<endl;
    cout<<"             ###.......######              ###            ###"<<endl;
    cout<<"                ...........               #...#          #...#"<<endl;
    cout<<"               ##*#######                 #.#.#          #.#.#"<<endl;
    cout<<"            ####*******######             #.#.#          #.#.#"<<endl;
    cout<<"           ...#***.****.*###....          #...#          #...#"<<endl;
    cout<<"           ....**********##.....           ###            ###"<<endl;
    cout<<"           ....****    *****...."<<endl;
    cout<<"             ####        ####"<<endl;
    cout<<"           ######        ######"<<endl;
    cout<<"##############################################################"<<endl;
    cout<<"#...#......#.##...#......#.##...#......#.##------------------#"<<endl;
    cout<<"###########################################------------------#"<<endl;
    cout<<"#..#....#....##..#....#....##..#....#....#####################"<<endl;
    cout<<"##########################################    #----------#"<<endl;
    cout<<"#.....#......##.....#......##.....#......#    #----------#"<<endl;
    cout<<"##########################################    #----------#"<<endl;
    cout<<"#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#"<<endl;
    cout<<"##########################################    ############"<<endl;
}

int main(){
    print();
}

P1008

[NOIP1998 普及组] 三连击 - 洛谷

在 C++ 中,fillfill_n 是两个标准库函数,用于给容器中的元素赋值。

fill 函数

fill 函数用于给一个范围内的所有元素赋相同的值。它的原型如下:

template <class ForwardIterator, class T>

void fill (ForwardIterator first, ForwardIterator last, const T& val);

  • firstlast 是迭代器,分别指向容器中要填充的范围的开始和结束。
  • val 是要赋给元素的值。

例如,如果你想要将一个 vector<int> 中的所有元素设置为 5,你可以这样做:

vector<int> v(10); 
fill(v.begin(), v.end(), 5);

fill_n 函数

fill_n 函数用于给从指定位置开始的一定数量的元素赋相同的值。它的原型如下:

template <class OutputIterator, class Size, class T>

void fill_n (OutputIterator first, Size n, const T& val);

  • first 是一个迭代器,指向容器中要开始填充的位置。
  • n 是要填充的元素数量。
  • val 是要赋给元素的值。

例如,如果你想要将一个 vector<int> 中的前 5 个元素设置为 10,你可以这样做:

vector<int> v(10); 
fill_n(v.begin(), 5, 10);

总的来说,fillfill_n 都是用来给容器中的元素赋值的函数,但它们的使用场景略有不同。fill 适用于给一个范围内的所有元素赋值,而 fill_n 适用于给从某个位置开始的一定数量的元素赋值。

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(){
	int a=0,b=0,c=0;
	for(int i=123;i<=333;i++){
		int a = i;
		int b = 2*i;
		int c = 3*i;
		if(a%100%10+a%100/10+a/100+b%100%10+b%100/10+b/100+c%100%10+c%100/10+c/100==45&&
			(a%100%10)*(a%100/10)*(a/100)*(b%100%10)*(b%100/10)*(b/100)*(c%100%10)*(c%100/10)*(c/100)==362880)
				cout<<a<<" "<<b<<" "<<c<<endl;	
	}
}

 

#include <algorithm>
#include<iostream>
using namespace std;

int i=0,j=0,v=0;//v计数
bool a[10];

int main(){
	for(int i=123;i<=329;i++){
		int v= 0;
		memset(a,0,sizeof(a));
		a[i%10]=a[i/10%10]=a[i/100]=a[i*2%10]=a[i*2/10%10]=a[i*2/100]=a[i*3%10]=a[i*3/10%10]=a[i*3/100]=1;
		for(int j=1;j<=9;j++)
			v += a[j];
		if(v==9) cout << i << " " << i * 2 << " " << i * 3 << endl;
	}
}
#include<iostream>
#include<vector>
#include<string>
using namespace std;

int main(){
	int v=0;
	vector<int>a(10);

	for(int i=123;i<=333;i++){
		fill(a.begin(),a.end(),0);
		a[i % 10] = a[i / 10 % 10] = a[i / 100] = a[i * 2 % 10] = a[i * 2 / 10 % 10] = a[i * 2 / 100] = a[i * 3 % 10] = a[i * 3 / 10 % 10] = a[i * 3 / 100] = 1;
        v = 0; // 重置计数器
        for (int j = 1; j <= 9; j++) // 检查数字 1 到 9 是否都出现了
            v += a[j];
        if (v == 9) // 如果所有数字都出现了,则打印结果
            cout << i << " " << i * 2 << " " << i * 3 << endl;
	}
}

 

 

洛谷平台上的P2010题目名为《回文日期》,这是一道关于识别特定格式下回文特性的算法题。对于这个问题,可以采用以下几种方式来理解和解决: 理解题目背景和要求 了解什么是回文数以及如何在给定的日期范围内找到所有的回文日期。 选择合适的编程语言实现解决方案 例如Java等支持字符串处理的语言非常适合用来编写此类问题的解答代码。 考虑边界条件 包括但不限于闰年的存在与否、每个月份的最大天数差异等因素。 下面提供一个简单的解题思路概述: 为了确定哪些日期是回文的,可以通过暴力枚举的方法遍历指定范围内的所有日期,并检查这些日期是否满足回文特性。由于涉及到年份转换成对应的日历表示形式,因此需要注意不同月份长度的变化尤其是二月因为可能存在29号的情况。此外,在验证过程中应当确保所构造出来的“反转”后的数字确实代表了一个合法存在的公历日期。 具体来说,当遇到类似2月这样的特殊情况时,可以直接假设每月都有29天来进行初步筛选;而在最终确认阶段再做精确校验以排除那些实际上不存在的日子即可。同时也要记得对其他非特殊月份的日数限制加以适当考量。 以下是简化版伪代码框架用于演示这一过程的一部分逻辑: ```python for year in range(start_year, end_year + 1): for month in range(1, 13): # Months from January to December days_in_month = get_days_of_month(year, month) # Function that returns the number of days in a given month and year. for day in range(1, days_in_month + 1): date_str = format_date_as_string(day, month, year) if is_palindrome(date_str): add_to_result_list(date_str) def is_palindrome(s): return s == s[::-1] def format_date_as_string(d, m, y): # Converts d,m,y into string "yymmdd" pass def get_days_of_month(yr, mo): # Returns how many days are there in this specific yr-mo combination considering leap years etc. pass ``` 这段代码只是一个概念证明,并未完全实现功能完整的函数体定义。实际编码时还需要补充必要的细节和完善错误处理机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的小羽儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值