洛谷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;
	}
}

 

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力的小羽儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值