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
在 C++ 中,fill
和 fill_n
是两个标准库函数,用于给容器中的元素赋值。
fill 函数
fill
函数用于给一个范围内的所有元素赋相同的值。它的原型如下:
template <class ForwardIterator, class T>
void fill (ForwardIterator first, ForwardIterator last, const T& val);
first
和last
是迭代器,分别指向容器中要填充的范围的开始和结束。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);
总的来说,fill
和 fill_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;
}
}