最后一个字符
#include
using namespace std;
int main(){
char ch;
while(cin>>ch);
cout<<ch;
}
方向的运用
#include
using namespace std;
string xx;
int n,fangxiang,x,y;//方向1南,2西,3北,4东
int main() {
cin >> n >> xx;
for (int i=0;i<xx.length();i++) {
if (xx[i] == 'S') {
if(fangxiang%4==0)x++;
if(fangxiang%4==1)y--;
if(fangxiang%4==2)x--;
if(fangxiang%4==3)y++;
}
else fangxiang++;
}
cout<<x<<" "<<y;
}
这就是传说中的交互题吗?
输出一个没有输入过也没有输出过且小于等于2n+1的数字。
把它输入的标记上咱不输出,输出下一个最小的没输出过的数,自己输出过的可以标记也可以不标。因为不会重复访问,输出的结果是单调递增的。
#include
using namespace std;
int stdcin,num[2005],zz=1;
int main() {
cin>>stdcin;
cout<<1<<endl;num[1]=1;//我先出
while(cin>>stdcin&&stdcin){
num[stdcin]=1;
while(num[++zz]);//找到下一个没出过的数
cout<<zz<<endl;
}
}
n有什么用处啊?我这个不会超的,都是按顺序出的。
模拟一下,只要是偶数次,多少次都是一样的。直接模拟一下两次是否能变成即可。
#include
#include
using namespace std;
bool sign(string S){
return S == "R G B" || S == "G B R" || S == "B R G";
}
int main(){
string S, T;
getline(cin, S);getline(cin, T);
if(sign(S) == sign(T)) cout << "Yes";
else cout << "No";
}
看代码里的注释
#include
using namespace std;
typedef long long ll;
const int mod = 998244353;
ll dp[2010][2010][2],N,M,K,S,T,X;;
pair<int, int> v[2010];
int main() {
// 数列里面要有k+1个点,全部从1-n里面拿
// 要满足起点是s,终点是t,并且A[i]要和A[i+1]相连,x出现偶数次
// dp[i][j][k]表示第i个点,序列中第j个位置,x出现的奇数还是偶数次
cin>>N>>M>>K>>S>>T>>X;
for(ll i=1;i<=M;i++)cin>>v[i].first>>v[i].second;
dp[S][0][0]=1;
for(ll i=0;i<K;i++)
for(ll j=1;j<=M;j++){
ll x = v[j].first, y=v[j].second;
for(ll k=0;k<=1;k++){
//奇数和偶数的转换
(dp[x][i+1][k] += dp[y][i][k ^ (X==y)]) %= mod;
(dp[y][i+1][k] += dp[x][i][k ^ (X==x)]) %= mod;
}
}
cout<<dp[T][K][0];
}