118 条题解
-
-7
Code
#include<bits/stdc++.h> #define _ "Hello, MXOJ!" #define __ using #define ___ namespace #define ____ std; #define _____ int #define ______ main() #define _______ cout<<_; #define ________ return #define _________ 0; __ ___ ____ _____ ______{ _______ ________ _________ }
-
-7
A1题解
警告:此题解非正常题解,请不要以此作为标准
解题方法
使用c++11新特性:可变参数模板
先定义了一个可以打印vector,array,initializer_list中内容的函数print()
随后在main中分别定义"Hello MXOJ!\n"字符串拆解后的内容
最后调用print()函数输出即可
Code
#include <bits/stdc++.h> using namespace std; void print() {}// 终止条件 template<typename T, size_t N> void print(const array<T, N>& arr) { for (const auto& val : arr) { cout << val; } } template<typename T> void print(const vector<T>& vec) { for (const auto& val : vec) { cout << val; } } template<typename T> void print(const initializer_list<T>& init_list) { for (const auto& val : init_list) { cout << val; } } template<typename T> void print(const T& val) { cout << val; } template<typename T, typename... Types> void print(const T& val, const Types&... args) { print(val); print(args...); } int main() { ios::sync_with_stdio(0); cin.tie(nullptr); cout.tie(NULL); array<char, 6> hello = {'H', 'e', 'l', 'l', 'o', ','}; string space(" "); vector<char> mx(2, 'M'); mx.at(1) = 'X'; initializer_list<char> oj = {'O', 'J', '!'}; #define ENTER '\n' print(hello, space, mx, oj, ENTER); return 0; }
-
-7
MXOI A1 题解
前言
第一次注册,正好看看这 markdown 好不好用。
思路
观察到需要让你输出
Hello, MXOJ!
,输出即可。解题方法
最简单的,使用
cout
。当然你也可以用别的方式,能 AC 即可。
时间复杂度
显而易见的,。
Code
#include<stdio.h> #include<bits/stdc++.h> #define N 1000010 #define MOD 998244353 #define esp 1e-8 #define INF 999999999999999999 #define LL long long #define rep(i,a,b,g) for(LL i=a;i<=b;i+=g) #define rem(i,a,b,g) for(LL i=a;i>=b;i-=g) #define repn(i,a,b,g) for(LL i=a;i<b;i+=g) #define remn(i,a,b,g) for(LL i=a;i>b;i-=g) #define pll pair<LL,LL> #define mkp(x,y) make_pair(x,y) #define i128 __int128 #define lowbit(x) ((x)&(-(x))) #define lc (u<<1) #define rc (u<<1|1) using namespace std; void read(i128 &x) { x=0; i128 f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } x*=f; } void write(i128 x) { if(x<0) { x=-x; putchar('-'); } if(x>9)write(x/10); putchar((x%10)^48); } int main() { cout<<"Hello, MXOJ!"<<endl; return 0; }
-
-7
Hello, MXOJ!
思路:
我们发现这道题无法读入,可是这怎么行?千万不要出了什么乱子。
我们可以用一个简单的函数解决读入的问题。解题方法:
我们可以使用ungetc 将字符放回输入流。
这样我们就可以边读入边输出了。易错点:
- 因为这个函数是把字符放到输入流开头,所以要倒序把字符放回输入流中。 才能正序输出。
- 注意是英文标点。
- 注意 后面有空格。
复杂度
时间复杂度:
空间复杂度:
Code
#include <iostream> #include <cstring> using namespace std; int main() { ungetc('!', stdin); ungetc('J', stdin); ungetc('O', stdin); ungetc('X', stdin); ungetc('M', stdin); ungetc(' ', stdin); ungetc(',', stdin); ungetc('o', stdin); ungetc('l', stdin); ungetc('l', stdin); ungetc('e', stdin); ungetc('H', stdin); for(int i=0;i<12;i++) putchar(getchar()); }
信息
- ID
- 1
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- (无)
- 递交数
- 2477
- 已通过
- 1210
- 上传者