Class Test

Index

方程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

typedef long long ll;

ll x[1000],y[1000];

int cmp(const void *a,const void *b){
return *(ll *)a-*(ll *)b;
}

int main()
{
int T;
scanf("%d",&T);
while(T--){
ll a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
ll sum=c+a*b,index=0;
for(ll i=1;i<=sqrt(sum);i++){
if(sum%i==0){
if(i-b>=0&&(sum/i-a>=0)) x[index++]=i-b;
if(sum/i-b>=0&&(i-a>=0)) x[index++]=sum/i-b;
}
}
qsort(x,index,sizeof(ll),cmp);
printf("%lld\n",index);
for(int i=0;i<index;i++){
printf("%lld %lld\n",x[i],(sum/(x[i]+b)-a));
}
}
return 0;
}

横竖线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<stdio.h>
#include<string.h>

char map[501][501];

void print(){
int top=500,bottom=0,left=500;
for(int i=0;i<501;i++){
for(int j=0;j<501;j++){
if(map[i][j]!=' '){
if(i<top) top=i;
if(i>bottom) bottom=i;
if(j<left) left=j;
}
}
}
for(int i=top;i<=bottom;i++){
int j=500;
while(j>=0&&map[i][j]==' ') j--;
map[i][j+1]='\0';
for(int k=left;k<j+1;k++) printf("%c",map[i][k]);
puts("");
}
}

int main()
{
memset(map,' ',sizeof(map));
int T;
scanf("%d",&T);
while(T--){
char c;
int x,y,len;
scanf(" %c %d %d %d",&c,&x,&y,&len);
if(c=='H'){
for(int i=0;i<len;i++){
if(map[500-y][x+i]=='|'||map[500-y][x+i]=='+') map[500-y][x+i]='+';
else map[500-y][x+i]='-';
}
}else{
for(int i=0;i<len;i++){
if(map[500-y-i][x]=='-'||map[500-y-i][x]=='+') map[500-y-i][x]='+';
else map[500-y-i][x]='|';
}
}
}
print();
return 0;
}

数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<stdio.h>
#include<string.h>

char num[10010];

int main()
{
int T;
scanf("%d",&T);
while(T--){
scanf("%s",num);
int len=strlen(num);
if(len==1){
printf("%d\n",num[0]-'0');
continue;
}
int cnt=num[len-1]-'0'+1,index=0;
num[len-1]='\0';
for(int i=0;i<len-1;i++){
if(num[i]!='0'){
cnt+=num[i]-'0';
index++;
}
}
printf("%d\n",cnt+index-1);
}
return 0;
}

公共的数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include<stdio.h>

int max=1e9;
long long x[100],y[100];

int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}

int lcm(int a,int b){
return a*(b/gcd(a,b));
}

int gen(long long *num,int a,int b){
long long temp=1;
int index=1;
num[1]=b;
while(temp<=max){
temp=num[index]*a*1LL+b*1LL;
num[++index]=temp;
}
return index;
}

int main()
{
int T;
scanf("%d",&T);
while(T--){
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
int cnt=0;
if(a==1&&c==1){
cnt=max / lcm(b, d);
}
if(a!=1&&c==1){
int index=gen(x,a,b);
for(int i=1;i<index;i++){
if(x[i]%d==0) cnt++;
}
}
if(a==1&&c!=1){
int index=gen(y,c,d);
for(int i=1;i<index;i++){
if(y[i]%b==0) cnt++;
}
}
if(a!=1&&c!=1){
int index_x=gen(x,a,b);
int index_y=gen(y,c,d);
for(int i=1;i<index_x;i++){
for(int j=1;j<index_y;j++){
if(x[i]==y[j]){
cnt++;
break;
}
}
}
}
printf("%d\n",cnt);
}
return 0;
}

p^2*q

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<stdio.h>
#define N 10000010
int prime[N];
int cnt[N];

void solve(){

for(int i=2;i*i<N;i++){
if(prime[i]==0){
for(int j=i*i;j<N;j+=i){
prime[j]=1;
}
}
}

for(int i=2;i<2240;i++){
if(prime[i]==0){
for(int j=2;j<N;j++){
if(prime[j]==0){
long long temp=1LL*i*i*j;
if(temp>N) break;
cnt[temp]=1;
}
}
}
}

for(int i=2;i<=216;i++){
int t=i*i*i;
if(t<N) cnt[t]=0;
}

for(int i=1;i<N;i++){
cnt[i]+=cnt[i-1];
}
}

int main()
{
solve();
int T;
scanf("%d",&T);
while(T--){
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",cnt[b]-cnt[a-1]);
}
return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<stdio.h>
#include<string.h>
#define N 10010
#define Min(x,y) ( x > y ? y : x )
int num[N],a[N],b[N];

void solve(int n,int sum){
int min=1e9;
for(int i=0;i<n;i++){
int t=sum-num[i]+a[i];
min=Min(min,t);
}
for(int i=n-1;i>=0;i--){
int t=sum-num[i]+b[n-i-1];
min=Min(min,t);
}
printf("%d\n",min);
}

int main()
{
int T;
scanf("%d",&T);
while(T--){
int n,sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
sum+=num[i];
}
for(int i=1;i<n;i++){
a[i]=a[i-1]+num[i-1];
}
for(int i=1;i<n;i++){
b[i]=b[i-1]+num[n-i];
}
solve(n,sum);
}
return 0;
}

字符串_1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<stdio.h>
#include<string.h>
#include<math.h>
#define Min(x,y) ( x < y ? x : y)
char str1[1010],str2[1010];

int cmp(){
int len=strlen(str1),cnt=0;
for(int i=0;i<len;i++){
int t=abs(str1[i]-str2[i]);
cnt+=Min(t,26-t);
}
return cnt;
}

void update_left(char *str){
int len=strlen(str);
char c=str[0];
for(int i=0;i<len-1;i++){
str[i]=str[i+1];
}
str[len-1]=c;
}

void update_right(char *str){
int len=strlen(str);
char c=str[len-1];
for(int i=len-1;i>0;i--){
str[i]=str[i-1];
}
str[0]=c;
}

int main()
{
int T;
scanf("%d",&T);
while(T--){
scanf("%s%s",str1,str2);
int min=cmp(),len=strlen(str1);
for(int i=0;i<len;i++){
update_left(str1);
min=Min(cmp()+i+1,min);
}
for(int i=0;i<len-1;i++){
update_right(str1);
min=Min(cmp()+i+1,min);
}
printf("%d\n",min);
}
return 0;
}

Class Test
http://example.com/2024/12/17/Class-Test/
Author
Anfsity
Posted on
December 17, 2024
Licensed under