ACM练手

时间:2023-03-08 19:57:14
ACM练手
 #include<iostream>
#include<string.h>
using namespace std;
#define N 100
class stack
{
char s[N];
int top;
public:
stack() { top = -; }
void push(char p) { top++; s[top] = p; }
void pop() { top--; }
char seek() { return s[top]; }
bool empty() { if (top == -)return true; return false; }
};
void check(char* temp)
{
stack p;
if (temp[] == ')' || temp[] == ']')
cout << "no" << endl;
else
{
for (int i = ; i < strlen(temp); i++)
if (temp[i] == '(' || temp[i] == '[')
p.push(temp[i]);
else if (temp[i] == ')' || temp[i] == ']')
{
if (temp[i] == ')'&&p.seek() == '(')
p.pop();
else if(temp[i] == ']'&&p.seek() == '[')
p.pop();
else
{
cout << "no" << endl;
return;
}
}
if(p.empty())
cout << "yes" << endl;
else
cout << "no" << endl;
}
}
int main()
{
char s[];
int n; cin >> n;
for (int i = ; i < n; i++)
{
cin >> s;
check(s);
}
return ;
}
 #include<iostream>
#include<cstring>
#define maxsize 10000
using namespace std;
int a[maxsize];
int main()
{ int m;
cin >> m;
a[] = ;
long long delta = , pos = ;//pos为此刻进位到哪,由于delta用于进位累加,故long
for (int i = ; i <= m; i++)//让a[]从1乘到m
{
delta = ;
for (int j = ; j <= pos; j++)
{ a[j] = a[j] * i + delta;
delta = a[j] / ;//个位之前
a[j] = a[j] % ;//个位 }
if (delta != )//进位
{
while (delta) {//对进位进行循环,确保进位大于9时完全进位上去
a[pos + ] = delta % ;
delta = delta / ;
pos = pos + ;
}
}
} for (int i = pos; i >= ; i--)
{
cout << a[i];
} }