L1-002 打印沙漏 (20 分)
思路:找规律
#include <stdio.h>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <map>
#include <stack>
#include <string>
#include <cstring>
#include <vector>
#include <list>
#include <cstdlib>
#include <set>
#include <queue>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define FASTIO std::ios::sync_with_stdio(false);
#define PII pair<int,int>
typedef long long ll;
const int maxx=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
int n;
char c;
void solve()
{
scanf("%d %c",&n,&c);
int l=sqrt((n+1)/2.0);
for(int i=l;i>=1;i--)
{
for(int j=1;j<=l-i;j++) printf(" ");
for(int j=1;j<=2*i-1;j++) printf("%c",c);
printf("\n");
}
for(int i=2;i<=l;i++)
{
for(int j=1;j<=l-i;j++) printf(" ");
for(int j=1;j<=2*i-1;j++) printf("%c",c);
printf("\n");
}
printf("%d",n-(2*l*l-1));
}
int main()
{
int _t=1;
//scanf("%d",&_t);
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-009 N个数求和 (20 分)
思路:分数求和,分数化简
#include <stdio.h>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <map>
#include <stack>
#include <string>
#include <cstring>
#include <vector>
#include <list>
#include <cstdlib>
#include <set>
#include <queue>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define FASTIO std::ios::sync_with_stdio(false);
#define PII pair<int,int>
typedef long long ll;
const int maxx=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
int n;
void add(ll *fz,ll *fm,ll *z,ll *m)
{
*fz=(*fz)*(*m)+(*z)*(*fm);
*fm=(*fm)*(*m);
}
ll gcd(ll a,ll b)
{
return b? gcd(b,a%b):a;
}
void simply(ll *fz,ll *fm)//分数化简
{
ll tt=gcd(*fz,*fm);//最大公约数
*fz=*fz/tt;
*fm=*fm/tt;
}
void solve()
{
scanf("%d",&n);
ll fz=0,fm=0;
scanf("%lld/%lld",&fz,&fm);
for(int i=2;i<=n;i++)
{
ll z,m;
scanf("%lld/%lld",&z,&m);
add(&fz,&fm,&z,&m);
simply(&fz,&fm);
}
ll a=0;//整数部分
a=fz/fm;
fz%=fm;
simply(&fz,&fm);//再次化简
if(a) printf("%lld",a);
if(fz&&a) printf(" %lld/%lld",fz,fm);
else if(fz&&!a) printf("%lld/%lld",fz,fm);
else if(!fz&&!a) printf("0");
}
int main()
{
int _t=1;
//scanf("%d",&_t);
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-011 A-B (20 分)
#include <stdio.h>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <map>
#include <stack>
#include <string>
#include <cstring>
#include <vector>
#include <list>
#include <cstdlib>
#include <set>
#include <queue>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define FASTIO std::ios::sync_with_stdio(false);
#define PII pair<int,int>
typedef long long ll;
const int maxx=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
string a,b;
void solve()
{
getline(cin,a);
getline(cin,b);
int len1=a.length(),len2=b.length();
for(int i=0;i<len1;i++)
{
int flag=0;
for(int j=0;j<len2;j++)
{
if(a[i]==b[j])
{
flag=1;
break;
}
}
if(!flag) cout<<a[i];
}
}
int main()
{
int _t=1;
//scanf("%d",&_t);
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-015 跟奥巴马一起画方块 (15 分)
知识点:四舍五入 int l=x+0.5;//对x进行四舍五入
#include <stdio.h>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <map>
#include <stack>
#include <string>
#include <cstring>
#include <vector>
#include <list>
#include <cstdlib>
#include <set>
#include <queue>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define FASTIO std::ios::sync_with_stdio(false);
#define PII pair<int,int>
typedef long long ll;
const int maxx=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
int n;
char c;
void solve()
{
scanf("%d %c",&n,&c);
double x=n*0.5;
int l=x+0.5;//x进行四舍五入
for(int i=1;i<=l;i++)
{
for(int j=1;j<=n;j++)
{
printf("%c",c);
}
printf("\n");
}
}
int main()
{
int _t=1;
//scanf("%d",&_t);
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-020 帅到没朋友 (20 分)
思路:只要朋友圈人数大于1,就把这些人标记成不帅。注意答案的格式,空格的输出。
#include <stdio.h>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <map>
#include <stack>
#include <string>
#include <cstring>
#include <vector>
#include <list>
#include <cstdlib>
#include <set>
#include <queue>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define FASTIO std::ios::sync_with_stdio(false);
#define PII pair<int,int>
typedef long long ll;
const int maxx=1e5+10;
const int inf=0x3f3f3f3f;
using namespace std;
int n,m;
int a[maxx];
void solve()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int num;
scanf("%d",&num);
for(int j=1;j<=num;j++)
{
int p;
scanf("%d",&p);
if(num>1) a[p]=1;//朋友圈人数大于1,这人不帅的
}
}
int t=0;
scanf("%d",&m);
while(m--)
{
int id;
scanf("%d",&id);
if(a[id]==0)
{
if(t!=0) printf(" ");
t++;
printf("%05d",id);//’%05d’,5为要求输出位数,0为补位字符 。
a[id]=1;//输出后,做标记,避免重复查询
}
}
if(t==0) printf("No one is handsome");
}
int main()
{
int _t=1;
//scanf("%d",&_t);
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-027 出租 (20 分)
思路:把用到的数字存到arr中,然后遍历电话号码,找到下标
#include <stdio.h>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <map>
#include <stack>
#include <string>
#include <cstring>
#include <vector>
#include <list>
#include <cstdlib>
#include <set>
#include <queue>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define FASTIO std::ios::sync_with_stdio(false);
#define PII pair<int,int>
typedef long long ll;
const int maxx=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
bool vis[10];
string s;
int arr[15];
int idx[15];
void solve()
{
cin>>s;
int len=s.length();
for(int i=0;i<len;i++)
{
vis[s[i]-'0']=1;
}
int cnt=0;
for(int i=9;i>=0;i--)
{
if(vis[i]) arr[cnt++]=i;
}
int t=0;
for(int i=0;i<len;i++)
{
for(int j=0;j<cnt;j++)
{
if(arr[j]==s[i]-'0')
{
idx[t++]=j;
break;
}
}
}
printf("int[] arr = new int[]{");
for(int i=0;i<cnt;i++) printf("%d%c",arr[i],",}"[i==cnt-1]);
printf(";\nint[] index = new int[]{");
for(int i=0;i<t;i++) printf("%d%c",idx[i],",}"[i==t-1]);
printf(";");
}
int main()
{
int _t=1;
//scanf("%d",&_t);
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-006 连续因子 (20 分)
题意:给你整数n,求最长的连续因子个数,并输出最小的连续因子
注意:单独输出素数情况
#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
int n;
void solve()
{
cin>>n;
int cnt=0,mcnt=0,start=0;//mcnt最大的连续因子个数
for(int i=2;i<=sqrt(n);i++)
{
int x=n;
int j=i;
cnt=0;
while(x%j==0)
{
x/=j;
j++;
cnt++;
}
if(cnt>mcnt)
{
mcnt=cnt;
start=i;
}
}
if(mcnt)//不是素数
{
cout<<mcnt<<'\n';
for(int i=start;i<start+mcnt;i++)
{
if(i==start) cout<<i;
else cout<<'*'<<i;
}
cout<<'\n';
}
else cout<<1<<'\n'<<n<<'\n';
}
int main()
{
//ios;
int _t=1;
//cin>>_t;
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-016 查验身份证 (15 分)
#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
int q[20]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
map<int,char>m;
int n,ans;
void solve()
{
m[0]='1',m[1]='0',m[2]='X',m[3]='9';
m[4]='8',m[5]='7',m[6]='6',m[7]='5';
m[8]='4',m[9]='3',m[10]='2';
cin>>n;
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
int z=0;
for(int j=0;j<17;j++)
{
z+=(s[j]-'0')*q[j];
}
z=z%11;
char op=m[z];
if(s[17]!=op)
{
ans++;
cout<<s<<'\n';
}
}
if(ans==0) cout<<"All passed\n";
}
int main()
{
//ios;
int _t=1;
//cin>>_t;
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-043 阅览室 (20 分)
题意:
注意:(1)一本书在一天中可能会被多次借阅。
(2)若SSSE则计算的是最后一个SE
#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
void solve()
{
int n;
cin>>n;
while(n--)
{
int time[1010]={0};//每天要清空数组
bool vis[1010]={0};//vis[i]=1表示第i本书被借了
int sum=0,cnt=0;//总时长,借阅次数
int num=0,h,m;
char op;
while(scanf("%d %c %d:%d",&num,&op,&h,&m))
{
if(num==0) break;
if(op=='S')
{
vis[num]=1;
time[num]=h*60+m;
}
else if(op=='E'&&vis[num])//这个if的 判断必须加上vis[num]
{
cnt++;
sum+=h*60+m-time[num];
vis[num]=0;//这一步很重要
time[num]=0;
}
}
if(cnt==0) cout<<0<<' '<<0<<'\n';
else
{
cout<<cnt<<' ';
printf("%.0f\n",1.0*sum/cnt);
}
}
}
int main()
{
//ios;
int _t=1;
//cin>>_t;
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-046 整除光棍 (20 分)
思路:模拟竖式除法,直至余数为0;余数不为零时,那么增加一位1,使余数*10+1.
#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
int x;
void solve()
{
cin>>x;
int s=1;
int cnt=1;
while(s<x)
{
s=s*10+1;
cnt++;
}
while(1)
{
cout<<s/x;
if(s%x==0) break;
s=s%x*10+1;
cnt++;
}
cout<<' '<<cnt<<'\n';
}
int main()
{
//ios;
int _t=1;
//cin>>_t;
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-049 天梯赛座位分配 (20 分)
#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
int d[110];
int a[110][110][15];
void solve()
{
int n;
cin>>n;
int maxd=-inf;//记录最大队伍数量
for(int i=1;i<=n;i++)
{
cin>>d[i];
maxd=max(maxd,d[i]);
}
int lasti=-1;
int num=0;
for(int j=1;j<=maxd;j++)//当前要处理的队伍编号
{
for(int k=1;k<=10;k++)//队员编号
{
for(int i=1;i<=n;i++)//遍历每个学校
{
if(j<=d[i])//此学校需要处理
{
if(lasti==i)
{
num+=2;
}
else num++;
a[i][j][k]=num;
lasti=i;//记录上一次处理的学校编号
}
}
}
}
for(int i=1;i<=n;i++)
{
cout<<"#"<<i<<'\n';
for(int j=1;j<=d[i];j++)
{
for(int k=1;k<=10;k++)
{
cout<<a[i][j][k]<<" \n"[k==10];
}
}
}
}
int main()
{
//ios;
int _t=1;
//cin>>_t;
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-056 猜数字 (20 分)
#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e4+10;
const int inf=0x3f3f3f3f;
using namespace std;
struct node{
string name;
int num;
}a[N];
int n;
void solve()
{
cin>>n;
double ans=0;
for(int i=1;i<=n;i++)
{
cin>>a[i].name>>a[i].num;
ans+=a[i].num;
}
int tt=ans/n/2;
int idx=-1;
int mi=inf;
for(int i=1;i<=n;i++)
{
if(abs(tt-a[i].num)<=mi)
{
mi=abs(tt-a[i].num);
idx=i;
}
}
cout<<tt<<' '<<a[idx].name<<'\n';
}
int main()
{
//ios;
int _t=1;
//cin>>_t;
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-059 敲笨钟 (20 分)
#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
string s;
bool check(int pos)
{
if(s[pos]=='g'&&s[pos-1]=='n'&&s[pos-2]=='o') return true;
return false;
}
void solve()
{
int n;
cin>>n;
getchar();
for(int i=1;i<=n;i++)
{
s.clear();
getline(cin,s);
int len=s.length();
int pos=0;
for(int j=0;j<len;j++)
{
if(s[j]==',')
{
pos=j;
break;
}
}
if(check(len-2)&&check(pos-1))
{
int cnt=0,pp=0;
for(int j=len-1;j>=0;j--)
{
if(s[j]==','||s[j]==' ')
{
cnt++;
pp=j;
}
if(cnt==3) break;
}
cout<<s.substr(0,pp+1)<<"qiao ben zhong.\n";
}
else cout<<"Skipped\n";
}
}
int main()
{
//ios;
int _t=1;
//cin>>_t;
while(_t--)
{
solve();
}
system("pause");
return 0;
}
L1-064 估值一亿的AI核心代码 (20 分)
#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;
using namespace std;
string s;
void solve()
{
int n;
cin>>n;
getchar();
for(int i=1;i<=n;i++)
{
s.clear();
getline(cin,s);
cout<<s<<'\n';
s.erase(0,s.find_first_not_of(' '));
s.erase(s.find_last_not_of(' ')+1);
for(int j=0;j<s.length();j++)//去掉大写和其他多余空格
{
if(isalnum(s[j]))//数字字母
{
if(s[j]!='I')
{
s[j]=tolower(s[j]);
}
}
else if(s[j]==' ')//空格
{
if(j<s.length()&&s[j+1]==' ')
{
s.erase(j,1);
j--;
}
}
else//其他字符
{
if(s[j]=='?') s[j]='!';
if(j-1>=0&&s[j-1]==' ')
{
s.erase(j-1,1);
j--;
}
}
}
for(int beg=0;;beg++)
{
beg=s.find("can you",beg);
if(beg==-1) break;
if((!beg||!isalnum(s[beg-1]))&&(beg+7==s.length()||!isalnum(s[beg+7])))
{
s.replace(beg,7,"A can");
}
}
for(int beg=0;;beg++)
{
beg=s.find("could you",beg);
if(beg==-1) break;
if((!beg||!isalnum(s[beg-1]))&&(beg+9==s.length()||!isalnum(s[beg+9])))
{
s.replace(beg,9,"A could");
}
}
for(int beg=0;;beg++)
{
beg=s.find("I",beg);
if(beg==-1) break;
if((!beg||!isalnum(s[beg-1]))&&(beg+1==s.length()||!isalnum(s[beg+1])))
{
s.replace(beg,1,"you");
}
}
for(int beg=0;;beg++)
{
beg=s.find("me",beg);
if(beg==-1) break;
if((!beg||!isalnum(s[beg-1]))&&(beg+2==s.length()||!isalnum(s[beg+2])))
{
s.replace(beg,2,"you");
}
}
for(int i=0;i<s.length();i++)
{
if(s[i]=='?') s[i]='!';
if(s[i]=='A') s[i]='I';
}
cout<<"AI: "<<s<<'\n';
}
}
int main()
{
//ios;
int _t=1;
//cin>>_t;
while(_t--)
{
solve();
}
system("pause");
return 0;
}