A
#include<iostream>
#include<string>
using namespace std;
int main(){
int n;
string s[20];
cin>>n;
for(int i=1;i<=n;i++)cin>>s[i];
for(int i=n;i>=1;i--)cout<<s[i]<<endl;
return 0;
}
B
#include<iostream>
using namespace std;
int main(){
int T,N,x,ans;
cin>>T;
while(T--){
ans=0;
cin>>N;
for(int i=1;i<=N;i++){
cin>>x;
if(x%2==1)ans++;
}
cout<<ans<<endl;
}
return 0;
}
C(并查集板子)
#include<iostream>
#include<algorithm>
using namespace std;
int fa[110],num[110];
int find(int x){
if(x==fa[x]) return x;
else{
fa[x]=find(fa[x]);
return fa[x];
}
}
void unity(int a,int b){
fa[find(b)]=find(a);
}
int main(){
int N,M,ans=0,u,v;
cin>>N>>M;
for(int i=1;i<=N;i++)fa[i]=i;
for(int i=1;i<=M;i++){
cin>>u>>v;
unity(u,v);
}
for(int i=1;i<=N;i++){
num[i]=find(i);
}
sort(num+1,num+N+1);
// for(int i=1;i<=N;i++)cout<<num[i]<<endl;
for(int i=1;i<N;i++){
if(num[i]!=num[i+1]){
ans++;
}
}
cout<<ans+1;
return 0;
}
D用埃氏筛法打表然后暴力试除。
#include<iostream>
#include<math.h>
#define int long long
using namespace std;
const int P=10000010;
bool str[P];
int prime1[P],cnt;
void prime()
{
str[1] = 1;
for(int i=2;i*i<=P;i++)
{
if(!str[i])
{
for(int j=i*i;j<=P;j+=i)
str[j] = 1;
}
}
for(int i=1;i<P;i++){
if(!str[i])prime1[cnt++]=i;
}
}
void ans(int x){
for(int i = 0; i < cnt; i ++ )
{
if(x%(prime1[i]*prime1[i])==0){
int n=x/prime1[i]/prime1[i];
cout<<prime1[i]<<' '<<n<<endl;
return;
}
if(x % prime1[i] == 0)
{
int num = x / prime1[i];
int n = (int)sqrt(num);
cout << n << " " << prime1[i] <<endl;
return;
}
}
}
signed main(){
int T,x;
cin>>T;
prime();
for(int i=1;i<=T;i++){
cin>>x;
ans(x);
}
return 0;
}
E
注意下DFS中的坑:每次都要先判断,再对总的贡献++;
#include<iostream>
#include<algorithm>
#include <cstring>
#include<stdio.h>
using namespace std;
const int N = 10000000;
int h[N], e[N], ne[N], idx,n,m,u,v;
int ans;
bool used[N];
void add(int u, int v)
{
e[idx] = v; ne[idx] = h[u]; h[u] = idx++;
}
void DFS(int x)
{
if(ans==1000000)return;
ans++;
if (ans == 1000000)return;
used[x] = true;
for (int i = h[x]; i != -1; i = ne[i])
{
int j = e[i];
if (!used[j])DFS(j);
}
used[x] = false;
}
int main()
{
cin >> n >> m;
memset(h, -1, sizeof(h));
for (int i = 1; i <= m; i++)
{
cin >> u >> v;
add(u, v); add(v, u);
}
DFS(1);
cout << ans << endl;
return 0;
}