A魔法对决

#include<stdio.h>
int main(){
int x, y;
scanf("%d%d", &x, &y);
if(x == 0 && y == 1 || x == 1 && y == 2 || x == 2 && y == 0){
printf("Hongwins");
} else if(x == y){
printf("Draw");
} else{
printf("chengwins");
}
return 0;
}
0 是石头 1 是剪子 2是布
第一步:我在什么情况下会赢???
列举一下:0 >1 1>2 2 >0
第二步:什么时候平?
一样的时候
第三步:什么时候输?
除了前边两种情况,剩下的都是输
B四舍五入

#include<stdio.h>
int main(){
int n;
scanf("%d", &n);
int a, b;
a = n / 10;
b = n % 10;
// 判断个位数是否大于等于5,决定是否向十位进位
if(b >= 5){ // 如果个位数大于等于5,需要向十位进1
printf("%d",(a + 1) * 10); // 进位后,结果为(原十位数值+1)乘以10(如56→60)
} else{ // 如果个位数小于5,不需要进位
printf("%d",a * 10); // 结果为原十位数值乘以10(如53→50)
}
}
c判断闰年

#include<stdio.h>
int main(){
int n;
scanf("%d", &n);
if ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0)){
printf("yes");
} else {
printf("no");
}
return 0;
}
Dhelloworld

#include<stdio.h>
int main()
{
printf("%c%c%c%c%c%c%c%c%c%c%c",'h'+1,'e'+1,'l'+1,'l'+1,'o'+1,' '+1,'w'+1,'o'+1,'r'+1,'l'+1,'d'+1);
return 0;
}
E材料打印

这题就是先考虑便宜的能便宜就便宜
#include<stdio.h>
int main()
{
long long T;
scanf("%lld", &T);
long long a, b, x, y;
for(int i = 0; i < T; i++)
{
scanf("%lld %lld %lld %lld", &a, &b, &x, &y);
if(x <= y) {
printf("%lld\n", a * x + b * y);
} else {
printf("%lld\n",a * y + b * y);
}
}
return 0;
}
F几何高手

核心考点是Π的使用 不会用这系列的去学
棍子+绳子是 棍子的轨道投影半径
S=ΠR方
#include<stdio.h>
#include<math.h>
int main()
{
int a, b;
double result;
scanf("%d %d", &a, &b);
result = M_PI * (a + b) * (a + b); //数学常量PI java用Math.PI
printf("%.10lf",result); //保留10位小数
return 0;
}
G数组重排
这个就是一个快排
要求重排后a1 * a2 < a3 * a4
从小到大排序后判断ai*ai-1是否小于ai*ai+1
学一点c++ 用sort更方便
#include <stdio.h>
#include <stdlib.h>
typedef long long ll;
ll a[10000000];
int compare(const void *x, const void *y) {
ll num1 = *(ll *)x;
ll num2 = *(ll *)y;
if (num1 > num2) return 1;
else if (num1 < num2) return -1;
else return 0;
}
int main() {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%lld", &a[i]);
}
qsort(a + 1, n, sizeof(ll), compare);
//判断a[i]*a[i-1]是否小于a[i]*a[i+1]
for (int i = 2; i < n; i++) {
if (a[i] * a[i - 1] >= a[i] * a[i + 1]) {
printf("NO\n");
return 0;
}
}
printf("YES\n");
for (int i = 1; i <= n; i++) {
printf("%lld ", a[i]);
}
return 0;
}
H前缀询问


找规律用数组记录某数字出现的次数 a【5】 = 9 意味着 5出现9次
#include<stdio.h>
int main()
{
long long n;
scanf("%lld",&n);
long long arr[n];
for(long long i=0;i<n;i++)
{
scanf("%lld",&arr[i]);
}
for(long long i=0;i<n;i++)
{
long long m=0;
for(long long j=0;j<=i;j++)
{
if(arr[j]==arr[i])
{
m=m+1;
}
}
long long x=x+m-1;
printf("%lld ",x);
}
return 0;
}
I分割序列

计算一个数组中所有元素对的距离和
#include <stdio.h>
#include <stdlib.h>
// 比较函数,用于qsort排序
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int n;
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
qsort(arr, n, sizeof(int), compare);
long long max_cost = 0;
for (int i = 0; i < n-1; i++)
{
max_cost +=(i + 1) * arr[i];
}
printf("%lld\n", max_cost);
free(arr);
return 0;
}
J收纳方块

import java.util.*;
import java.math.*;
public class Main {
private static Scanner sc= new Scanner(System.in);
public static void main(String[] args) {
int t = 1;
t = sc.nextInt();
while (t-- > 0) {
solve();
}
sc.close();
}
public static void solve() {
int n = sc.nextInt();
long[] dp = new long[n + 2];
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
for(int i = 3; i <= n; i++){
dp[i] = dp[i - 1] + dp[i - 2]; //每项由前两项和推出 因为每次可以选择1和2 所以他是-1 和 -2 项相加
}
System.out.println(dp[n]);
}
}
K排列出来

import java.util.*;
import java.io.*;
import java.math.*;
import java.time.*;
public class Main {
static Scanner sc = new Scanner(System.in);
static long MOD = (long) (1e9 + 7);
public static void main(String[] args) {
int t = 1;
// t = sc.nextInt();
while (t-- > 0) {
solve();
}
sc.close();
}
public static void solve() {
dfs("", 0);
}
public static void dfs(String s, int depth) {
if (depth == 8) {
System.out.println(s.trim());
return;
}
for (int i = 1; i <= 8; i++) {
if (!s.contains(String.valueOf(i))) {
dfs(s + i + " ", depth + 1);
}
}
}
}
L你要的模板


public static void main(String[] args) {
int t = 1;
t = sc.nextInt();
while (t-- > 0) {
solve();
}
sc.close();
}
public static void solve() {
int n = sc.nextInt();
int m = sc.nextInt();
long[] dp = new long[m + 1];
dp[0] = 0;
for (int i = 0; i < n; i++) {
int a = sc.nextInt();
long[] v = new long[a + 1];
long[] w = new long[a + 1];
for (int j = 0; j < a; j++) {
v[j] = sc.nextLong();
}
for (int j = 0; j < a; j++) {
w[j] = sc.nextLong();
}
for (int j = m; j >= 0; j--) {
for (int k = 0; k < a; k++) {
if (j >= w[k]) {
dp[j] = Math.max(dp[j], dp[j - (int)w[k]] + v[k]);
}
}
}
}
System.out.println(dp[m]);
}
}