T1 计算摄氏温度(签到)
题目:
代码:
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
double p = 5*(n-32)/9;
printf("Celsius = %d",(int)p);
return 0;
}
T2 查验身份证(模拟)
题目:
样例:
数学不好,题都要读不懂了(什么是权重啊呜呜)
代码:
#include <iostream>
using namespace std;
const int mod = 11;
string a;
char m[11]={'1','0','X','9','8','7','6','5','4','3','2'};
int q[19]={0,7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
bool check(int z,char c){
if(m[z]!=c) return false;
return true;
}
int main(){
bool all=true;
int t=1; cin>>t;
int n = t;
while(t--){
cin>>a;
int sum=0,zz;
bool single = true;
for(int i=0;i<17;i++){
if(a[i]<'0'||a[i]>'9'){
all = false;
single = false;
}
if(single==false){
cout<<a<<endl;
break;
}
int num = a[i]-'0';
sum+=num*q[i+1];
}
if(single == false) continue;
zz = sum%mod;
if(check(zz,a[17])){
}
else{
all = false;
single = false;
cout<<a<<endl;
continue;
}
}
if(all==true) cout<<"All passed";
return 0;
}
T3 帅到没朋友(模拟)
题目:
代码:
#include <iostream>
#include <cstring>
using namespace std;
int n,q,t,x,f[100005],v[100005];
void init(){
memset(v,0,sizeof(v));
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
init();
cin>>t;
for(int i=1;i<=t;i++){
cin>>x;
if(v[x]) f[x]--;
else f[x]+=t-1,v[x]=1;
}
}
bool sp=true;
cin>>q;
while(q--){
cin>>t;
if(f[t]==-1) continue;
if(!f[t])
cout<<t<<' ',sp=false,f[t]=-1;
}
if(sp) cout<<"No one is handsome";
}
T4 输出GPLT(模拟)
题目:
代码:
#include <iostream>
using namespace std;
char s[8]={'G','P','L','T','g','p','l','t'};
int cnt[5],tot;
int main(){
string a;
cin>>a;
for(int i=0;i<a.length();i++)
for(int j=0;j<4;j++){
if(a[i]==s[j]||a[i]==s[j+4]){
cnt[j]++;
tot++;
}
}
int i=0;
while(tot--){
while(!cnt[i]){
i++;
i%=4;
}
cout<<s[i];
cnt[i]--,i++,i%=4;
}
return 0;
}
T5 判断素数(暴力)
题目:
代码:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int t; cin>>t;
while(t--){
bool no=false;
long long int num;
cin>>num; if(num==1){
cout<<"No"<<endl;
continue;
}
for(int i=2;i<=sqrt(num);i++){
if(num%i==0){
no=true;
break;
}
}
if(no==true) cout<<"No"<<'\n';
else cout<<"Yes"<<'\n';
}
return 0;
}
T6 最佳情侣身高差(签到)
题目:
代码:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int t; cin>>t;
while(t--){
char a; cin>>a;
double h; cin>>h;
if(a=='M') printf("%.2lf\n",h/1.09);
else printf("%.2lf\n",h*1.09);
}
return 0;
}
T7 连续因子(数学)
题目:
求连续因子,N的上界是2^31,所以只需要遍历sqrt(2^31)≈ 5e4次去更新答案即可。注意特判质数的情况,因子只有一个即为它本身。
代码:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int ans1=0,st;
int n; cin>>n;
for(int i=2;i<sqrt(n);i++){
int num=n,now = i;
int cnt = 0;
while(num%now==0){
cnt++;
num/=now;
now++;
}
if(ans1 < cnt){
ans1 = cnt;
st = i;
}
}
if(ans1){
cout<<ans1<<endl<<st;
for(int i=1;i<ans1;i++) cout<<"*"<<st+i;
}
else cout<<"1"<<endl<<n;
}
L2-1 红色警报
题目:
样例:
用搜索+并查集判断连通块数量,重要的城市被摧毁时连通块会增多。
代码:
#include <iostream>
#include <cstring>
using namespace std;
int n,m,k,a[505][505],vis[505],f[505],c[505],d[505];
bool calc(int dest){
bool b1[505],b2[505];//backet
memset(b1,0,sizeof(b1));
memset(b2,0,sizeof(b2));
int cnt1=0,cnt2=0;
for(int i=1;i<=n;i++){
if(!b1[f[i]]){
b1[f[i]]=1;
cnt1++;
}
if(!b2[c[i]]){
b2[c[i]]=1;
cnt2++;
}
}
if(cnt1!=cnt2) return false;
else return true;
}//qiu lian tong kuai
void cpy(){
for(int i=1;i<=n;i++){
c[i] = f[i];
}
}
void init(){
for(int i=1;i<=500;i++) f[i]=i;
}
int getf(int v){
if(f[v]==v) return v;
else{
f[v] = getf(f[v]);
return f[v];
}
}
void merge(int x,int y){
x = getf(x);
y = getf(y);
if(x<=y) f[x] = y;
else f[y] = x;
}
void dfs(int x){
for(int i=1;i<=n;i++){
if((vis[i]==0)&&(a[x][i]==1)&&(d[505]==false)){
merge(x,i);
vis[i]=1;
dfs(i);
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL),cout.tie(NULL);
cin>>n>>m;
init();
for(int i=1;i<=m;i++){
int st,ed;
cin>>st>>ed;
st++,ed++;
a[st][ed]=1;
a[ed][st]=1;
}
dfs(1);
cin>>k;
for(int i=1;i<=k;i++){
init();
memset(vis,0,sizeof(vis));
int temp; cin>>temp; temp++;
d[temp] = 1;
for(int j=1;j<=n;j++)
dfs(j);//new f[i]
if(calc(temp)){
printf("City %d is lost!\n",temp-1);
}
else if((!calc(temp))&&(i==k&&k==n)){
printf("Red Alert: City %d is lost!\n",temp-1);
}
else{
cout<<"Game Over"<<'\n';
}
cpy();
}
return 0;
}