同样这里的A、B、C、D都是人为,手动加上的
这7天受益匪浅
周末来了开摆了
文章目录
A、购物单(5分)
**** 180.90 88折
**** 10.25 65折
**** 56.14 9折
**** 104.65 9折
**** 100.30 88折
**** 297.15 半价
**** 26.75 65折
**** 130.62 半价
**** 240.28 58折
**** 270.62 8折
**** 115.87 88折
**** 247.34 95折
**** 73.21 9折
**** 101.00 半价
**** 79.54 半价
**** 278.44 7折
**** 199.26 半价
**** 12.97 9折
**** 166.30 78折
**** 125.50 58折
**** 84.98 9折
**** 113.35 68折
**** 166.57 半价
**** 42.56 9折
**** 81.90 95折
**** 131.78 8折
**** 255.89 78折
**** 109.17 9折
**** 146.69 68折
**** 139.33 65折
**** 141.16 78折
**** 154.74 8折
**** 59.42 8折
**** 85.44 68折
**** 293.70 88折
**** 261.79 65折
**** 11.30 88折
**** 268.27 58折
**** 128.29 88折
**** 251.03 8折
**** 208.39 75折
**** 128.88 75折
**** 62.06 9折
**** 225.87 75折
**** 12.89 75折
**** 34.28 75折
**** 62.16 58折
**** 129.12 半价
**** 218.37 半价
**** 289.69 8折
捏麻麻的,直接算就行
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
double price = 180.90*0.88+10.25*0.65+56.14*0.9+104.65*0.9+100.3*0.88+297.15*0.5+26.75*0.65+130.62*0.5
+240.28*0.58+270.62*0.8+115.87*0.88+247.34*0.95+73.21*0.9+101*0.5+79.54*0.5+278.44*0.7+199.26*0.5
+12.97*0.9+166.30*0.78+125.50*0.58+84.98*0.9+113.35*0.68+166.57*0.5+42.56*0.9+81.90*0.95
+131.78*0.8+255.89*0.78+109.17*0.9+146.69*0.68+139.33*0.65+141.16*0.78+154.74*0.8+59.42*0.8
+85.44*0.68+293.70*0.88+261.79*0.65+11.30*0.88+268.27*0.58+128.29*0.88+251.03*0.8+208.39*0.75
+128.88*0.75+62.06*0.9+225.87*0.75+12.89*0.75+34.28*0.75+62.16*0.58+129.12*0.5+218.37*0.5+289.69*0.8;
cout<<((int)price/100 + 1 )* 100<<endl;
return 0;
}
B、等差素数列(7分)
别想玩花里胡哨的,直接暴力就完事咯
#include<iostream>
using namespace std;
bool isPrime(int x)
{
for(int i = 2 ; i <= x / i ;i++)
if( x % i == 0 ) return false;
return true;
}
int main()
{
int sum=1;
for(int i = 2 ; i < 10000 ;i++)
if(isPrime(i))
{
for(int d = 1 ; d < 10000 ; d++)
for(int h = 1 ; h <= 10 ;h++)
{
int a = i + d * h;
if(isPrime(a)) sum++;
else
{
sum = 1;
break;
}
if(sum == 10)
{
cout<<k<<endl;
return 0;
}
}
}
return 0;
}
C、 承压计算 (13分)
X 星球的高科技实验室中整齐地堆放着某批珍贵金属原料。
每块金属原料的外形、尺寸完全一致,但重量不同。 金属材料被严格地堆放成金字塔形。
7
5 8
7 8 8
9 2 7 2
8 1 4 9 1
8 1 8 8 4 1
7 9 6 1 4 5 4
5 6 5 5 6 9 5 6
5 5 4 7 9 3 5 5 1
7 5 7 9 7 4 7 3 3 1
4 6 4 5 5 8 8 3 2 4 3
1 1 3 3 1 6 6 5 5 4 4 2
9 9 9 2 1 9 1 9 2 9 5 7 9
4 3 3 7 7 9 3 6 1 3 8 8 3 7
3 6 8 1 5 3 9 5 8 3 8 1 8 3 3
8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9
8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4
2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9
7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6
9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3
5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9
6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4
2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4
7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6
1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3
2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8
7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9
7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6
5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
其中的数字代表金属块的重量(计量单位较大)。 最下一层的 X 代表 30 台极高精度的电子秤。
假设每块原料的重量都十分精确地平均落在下方的两个金属块上, 最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。
电子秤的计量单位很小,所以显示的数字很大。
工作人员发现,其中读数最小的电子秤的示数为:2086458231
请你推算出:读数最大的电子秤的示数为多少?
我觉得这题用,文件读写来说,会更简单,还有这题是求比例,真的是坑
#include <bits/stdc++.h>
using namespace std;
const int N = 31;
double f[N][N];
double a[N][N] = {{0},{
0,7},{
0,5,8},{
0,7,8,8},{
0,9,2,7,2},{
0,8,1,4,9,1},{
0,8,1,8,8,4,1},{
0,7,9,6,1,4,5,4},{
0,5,6,5,5,6,9,5,6},{
0,5,5,4,7,9,3,5,5,1},{
0,7,5,7,9,7,4,7,3,3,1},{
0,4,6,4,5,5,8,8,3,2,4,3},{
0,1,1,3,3,1,6,6,5,5,4,4,2},{
0,9,9,9,2,1,9,1,9,2,9,5,7,9},{
0,4,3,3,7,7,9,3,6,1,3,8,8,3,7},{
0,3,6,8,1,5,3,9,5,8,3,8,1,8,3,3},{
0,8,3,2,3,3,5,5,8,5,4,2,8,6,7,6,9},{
0,8,1,8,1,8,4,6,2,2,1,7,9,4,2,3,3,4},{
0,2,8,4,2,2,9,9,2,8,3,4,9,6,3,9,4,6,9},{
0,7,9,7,4,9,7,6,6,2,8,9,4,1,8,1,7,2,1,6},{
0,9,2,8,6,4,2,7,9,5,4,1,2,5,1,7,3,9,8,3,3},{
0,5,2,1,6,7,9,3,2,8,9,5,5,6,6,6,2,1,8,7,9,9},{
0,6,7,1,8,8,7,5,3,6,5,4,7,3,4,6,7,8,1,3,2,7,4},{
0,2,2,6,3,5,3,4,9,2,4,5,7,6,6,3,2,7,2,4,8,5,5,4},{
0,7,4,4,5,8,3,3,8,1,8,6,3,2,1,6,2,6,4,6,3,8,2,9,6},{
0,1,2,4,1,3,3,5,3,4,9,6,3,8,6,5,9,1,5,3,2,6,8,8,5,3},{
0,2,2,7,9,3,3,2,8,6,9,8,4,4,9,5,8,2,6,3,4,8,4,9,3,8,8},{
0,7,7,7,9,7,5,2,7,9,2,5,1,9,2,6,5,3,9,3,5,7,3,5,4,2,8,9},{
0,7,7,6,6,8,7,5,5,8,2,4,7,7,4,7,2,6,9,2,1,8,2,9,8,5,7,3,6},{
0,5,9,4,5,5,7,5,5,6,3,5,3,9,5,8,9,5,4,1,2,6,1,4,3,5,3,2,4,1}};
int main(){
for(int i = 1; i <= 29; i ++)
{
for(int j = 1; j <= i;j ++)
{
double t = a[i][j] * 1.0 / 2;
a[i + 1][j] += t;
a[i + 1][j + 1] += t;
}
}
double mi = 0x3f, ma = 0;
for(int i = 1 ; i <= 30 ; i ++)
{
mi = min(a[30][i] , mi);
ma = max(ma , a[30][i]);
}
long long p = ma * (2086458231 * 1.0 / mi);
cout << p << endl;
return 0;
}
D、 方格切割(17分)
DFS,我们这里优雅解决镜像问题
(3,3)
这个点在哪个形状都存在
#include<iostream>
using namespace std;
const int N = 10;
int g[N][N];
int dx[] = {-1,0,1,0} , dy[] = {0,1,0,-1};
int res = 0;
void dfs(int x,int y)
{
if(x == 0 || x == 6 || y == 0 || y == 6 )
{
res ++;
return;
}
for(int i = 0 ; i < 4 ; i++)
{
int a = x + dx[i], b = y + dy[i];
if(g[a][b] == 0)
{
g[a][b] = 1;
g[6-a][6-b] = 1;
dfs(a,b);
g[a][b] = 0;
g[6-a][6-b] = 0;
}
}
}
int main()
{
g[3][3] = 1;
dfs(3,3);
cout << res / 4 << endl;
return 0;
}
E、取位数(9分)
#include <stdio.h>
// 求x用10进制表示时的数位长度
int len(int x){
if(x<10) return 1;
return len(x/10)+1;
}
// 取x的第k位数字
int f(int x, int k){
if(len(x)-k==0) return x%10;
return _____________________; //填空
}
int main()
{
int x = 23574;
printf("%d\n", f(x,3));
printf("%d\n", f(893275,2));
}
#include <stdio.h>
// 求x用10进制表示时的数位长度
int len(int x){
if(x<10) return 1;
return len(x/10)+1;
}
// 取x的第k位数字
int f(int x, int k){
if(len(x)-k==0) return x%10;
return f(x / 10,k); //填空
}
int main()
{
int x = 23574;
printf("%d\n", f(x,3));
printf("%d\n", f(893275,2));
}
F、最大公共子串(11分)
#include <stdio.h>
#include <string.h>
#define N 256
int f(const char* s1, const char* s2)
{
int a[N][N];
int len1 = strlen(s1);
int len2 = strlen(s2);
int i,j;
memset(a,0,sizeof(int)*N*N);
int max = 0;
for(i=1; i<=len1; i++){
for(j=1; j<=len2; j++){
if(s1[i-1]==s2[j-1]) {
a[i][j] = a[i-1][j-1] + 1 ; // 填空
if(a[i][j] > max) max = a[i][j];
}
}
}
return max;
}
int main()
{
printf("%d\n", f("abcdkkk", "baabcdadabc"));
printf("%d\n", f("aaakkkabababa", "baabababcdadabc"));
printf("%d\n", f("abccbaacbcca", "ccccbbbbbaaaa"));
printf("%d\n", f("abcd", "xyz"));
printf("%d\n", f("ab", "ab"));
return 0;
}
G、日期问题(19分)
列
【输入样例】
02/03/04
【输出样例】
2002-03-04
2004-02-03
2004-03-02
y总,这一手枚举,给我干门比了
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int days[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check_valid(int year,int month,int day)
{
if(month > 12 || month == 0) return false;
if(day == 0) return false;
if(month != 2 && day > days[month]) return false;
if(month == 2)
{
int leap = year % 100 && year % 4 == 0 || year % 400 == 0;
if(day > 28 + leap) return false;
}
return true;
}
int main()
{
int a,b,c;
scanf("%d/%d/%d",&a,&b,&c);
for(int date = 19600101 ; date <= 20591231 ; date++)
{
int year = date / 10000,month = date % 10000 / 100,day = date % 100;
if(check_valid(year,month,day))
{
if(year % 100 == a && month == b && day == c || // 年/月/日
month == a && day == b && year % 100 == c || // 月/日/年
day == a && month == b && year % 100 == c // 日/月/年
)
printf("%d-%02d-%02d\n",year,month,day);
}
}
return 0;
}
H、包子凑数(21分)
【输入样例】
2
4
5
【输出样例】
6
【输入样例】
2
4
6
【输出样例】
INF
【样例解释】
对于样例1,凑不出来的数目包括:1,2,3,6,7,11
对于样例2,所有奇数都凑不出来,所以为INF
这不用DP乱杀,我都对不起我自己
I、 分巧克力(23分)
【输入样例】
2 10
6 5
5 6
【输出样例】
2
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int h[N],w[N];
int n,k;
bool check(int mid)
{
int res = 0;
for(int i = 0 ; i < n ; i++)
{
res += (w[i] / mid) * (h[i] / mid);
if(res >= k) return true;
}
return false;
}
int main()
{
cin>>n>>k;
for(int i = 0 ; i < n ; i++) cin>>h[i]>>w[i];
int l = 1 ,r = 1e5;
while(l < r)
{
int mid = l + r + 1 >> 1;
if(check(mid)) l = mid;
else r = mid - 1;
}
cout<<l<<endl;
return 0;
}
J、k区间(25分)
【输入样例】
5 2
1
2
3
4
5
【输出样例】
6
y总的优化,给我看的麻麻的从,真的是考试,还得是暴力🤗
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
typedef long long LL;
LL s[N],cnt[N];
int n,k;
int main()
{
cin>>n>>k;
for(int i = 1 ; i <= n ; i++)
{
cin>>s[i];
s[i] += s[i-1];
}
LL res = 0;
cnt[0] = 1; // s[0] % k == 0 所以在开始之前,就已经有一个数字模k == 0了
for(int i = 1 ; i <= n ; i++)
{
res += cnt[s[i] % k];
cnt[s[i] % k]++;
}
cout<<res<<endl;
return 0;
}
每日一练
奇数的倍数
#include <iostream>
using namespace std;
int main()
{
for(int i = 2019 + 2019 ; i <= 1000000 ; i += 2019)
{
int t = i;
bool flag = true;
while(t)
{
if(t % 10 % 2 == 0)
{
flag = false;
break;
}
t /= 10;
}
if(flag)
{
cout << i << endl;
return 0;
}
}
return 0;
}
// 139311
第几个幸运数字
我们可以枚举所有之前的数从 3 0 ∗ 5 0 ∗ 7 0 {3^0*5^0*7^0} 30∗50∗70 开始枚举, n u m b e r = 3 a ∗ 5 b ∗ 7 c {number = 3^a * 5^b * 7^c} number=3a∗5b∗7c
#include <iostream>
using namespace std;
typedef long long LL;
int main()
{
LL number = 59084709587505;
LL res = 0;
for(LL i = 1 ; i <= number ; i *= 3)
for(LL j = 1 ; j * i <= number ; j *= 5)
for(LL k = 1 ; i * j * k <= number ; k *= 7)
res++;
cout << res - 1 << endl;
return 0;
}
四平方和
示例
输入
12
输出
0 2 2 2
二分
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 5e6 + 10;
struct Sum
{
int s,c,d;
bool operator< (const Sum &t)const
{
if(s != t.s) return s < t.s;
if(c != t.c) return c < t.c;
return d < t.d;
}
}sum[N];
int n,m;
int main()
{
cin>>n;
for(int c = 0 ; c * c <= n ; c++)
for(int d = c ; c * c + d * d <= n ; d++)
sum[m++] = {c * c + d * d , c , d};
sort(sum,sum + m);
for(int a = 0 ; a * a <= n ; a++)
for(int b = a ; a * a + b * b <= n ; b++)
{
int t = n - a * a - b * b;
int l = 0 , r = m - 1;
while(l < r)
{
int mid = l + r >> 1;
if(sum[mid].s >= t) r = mid;
else l = mid + 1;
}
if(sum[l].s == t)
{
printf("%d %d %d %d\n",a,b,sum[l].c,sum[r].d);
return 0;
}
}
return 0;
}
迷宫
01010101001011001001010110010110100100001000101010
00001000100000101010010000100000001001100110100101
01111011010010001000001101001011100011000000010000
01000000001010100011010000101000001010101011001011
00011111000000101000010010100010100000101100000000
11001000110101000010101100011010011010101011110111
00011011010101001001001010000001000101001110000000
10100000101000100110101010111110011000010000111010
00111000001010100001100010000001000101001100001001
11000110100001110010001001010101010101010001101000
00010000100100000101001010101110100010101010000101
11100100101001001000010000010101010100100100010100
00000010000000101011001111010001100000101010100011
10101010011100001000011000010110011110110100001000
10101010100001101010100101000010100000111011101001
10000000101100010000101100101101001011100000000100
10101001000000010100100001000100000100011110101001
00101001010101101001010100011010101101110000110101
11001010000100001100000010100101000001000111000010
00001000110000110101101000000100101001001000011101
10100101000101000000001110110010110101101010100001
00101000010000110101010000100010001001000100010101
10100001000110010001000010101001010101011111010010
00000100101000000110010100101001000001000000000010
11010000001001110111001001000011101001011011101000
00000110100010001000100000001000011101000000110011
10101000101000100010001111100010101001010000001000
10000010100101001010110000000100101010001011101000
00111100001000010000000110111000000001000000001011
10000001100111010111010001000110111010101101111000
#include<iostream>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
typedef pair<int,int> PII;
int dx[] = {1,0,0,-1}, dy[] = {0,-1,1,0}; // D < L < R < U
char items[] = {'D','L','R','U'};
char g[35][55];
bool st[35][55];
int d[35][55];
int n = 30,m = 50;
string ans;
void bfs()
{
queue<PII> q;
memset(d,-1,sizeof d);
d[30][50] = 0;
q.push({30,50});
while(!q.empty())
{
auto t = q.front();
q.pop();
for(int i = 0 ; i < 4 ; i++)
{
int a = t.first + dx[i], b = t.second + dy[i];
if(a > 0 && a <= m && b > 0 && b <= m && g[a][b] == '0' && d[a][b] == -1)
{
d[a][b] = d[t.first][t.second] + 1;
q.push({a,b});
}
}
}
}
int main()
{
for(int i = 1 ; i <= n ; i++)
for(int j = 1 ; j <= m ; j++)
cin >> g[i][j];
bfs();
// 存答案
int x = 1, y = 1;
while(x != 30 || y != 50)
{
for(int i = 0 ; i < 4 ; i++)
{
int a = x + dx[i],b = y + dy[i];
if(a > 0 && a <= 50 && b > 0 && b <= 50 && g[a][b] == '0' && d[a][b] == d[x][y] -1 )
{
x = a , y = b;
ans += items[i];
break;
}
}
}
cout << ans << endl;
return 0;
}
周末开始了,👴runrun了,