1.题目:欧拉猜想[自编题]
【问题描述】
欧拉猜想是欧拉提出的对“费马大定理”引出的猜想,欧拉猜想每个大于2的整数n,任何n-1个正整数的n次幂的和都不是某正整数的n次幂。
但是,和费马猜想不同的是,欧拉的猜想是错误的。这猜想在1966年被L.J.Lander和T.R.Parkin推翻。他们找出n= 5的反例为:27^5+ 84^5+ 110^5+ 133^5= 144^5
1988年,Noam Elkies找出一个对n= 4制造反例的方法:2682440^4+ 15365639^4+ 18796760^4 = 20615673^4
后来,Roger Frye以Elkies的技巧用电脑直接搜索,找出n= 4时最小的反例:
95800^4+ 217519^4+ 414560^4 = A^4
请求出等式中未知数A的值。
注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
这个题……最大收获是丰富了我对电脑计算器的认识吧。电脑计算器可以
2nd在这里可换页
换了科学可以算乘方开方,换了程序员可以算进制等等
并且可以直接复制数字到输入框,如果找不到计算器可以菜单+R,出现命令窗口后输入calc打开计算器。
另外 如果代码算 sum%k=(a%k+b%k+c%k)%k
答案422481
2.题目:完全对称日(自编题)
【问题描述】
2020年2月2日是农历正月初九,不少人称之寓意为长长久久,又因其完整写法“20200202”谐音为“爱你爱你你爱你爱”,被网友戏称为千年一遇的“完全对称日”。
然而,“完全对称日”真的是千年一遇吗?
实则不然,比如下一次的“完全对称日”在2021年12月2日(20211202),再下一次是在2030年3月2日(20300302)。
请统计出从公元1000年1月1日到公元9999年12月31日一共出现过多少次“完全对称日”?
请提交一个整数,不要填写任何多余的内容(比如,说明文字)
不说了吧,学长很强,但我很困看不懂啊
我记下来了!
//完全对称日解法1:遍历年份判断日期
#include <iostream>
using namespace std;
int a[13]= {-1,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int m,d,sum=0;
for(int i=1000; i<=9999; i++) {
m=(i%10)*10+(i/10)%10; //对称后的月份数(对应年份的个位和十位)
if(m>0&&m<=12) {
d=((i/100)%10)*10+i/1000; //对称后的日期数(对应年份的百位和千位)
if(d<=a[m]) //日期d满足当前月份的范围(本题中d不会为0)
sum++; //累加符合条件的对称数
}
}
cout<<sum+1<<endl; //关于闰年特判,有且只有一次:92200229,故记得+1
return 0;
}
//331
//完全对称日解法2:遍历日期判断年份
#include <iostream>
using namespace std;
int Mon[13]= {-1,31,29,31,30,31,30,31,31,30,31,30,31};
int main()
{
int sum=0;
for(int m=1; m<=12; m++) {
int m1=m/10,m2=m%10; //月份的十位和个位
for(int d=1; d<=Mon[m]; d++) {
int d1=d/10,d2=d%10; //日期的十位和个位
int y=d2*1000+d1*100+m2*10+m1;
if(y>=1000) {
sum++;
cout<<y<<m1<<m2<<d1<<d2<<endl;
}
}
}
cout<<sum<<endl;
return 0;
}
//解法3:一年最多366天,日期数个位数为0均不符合条件,除2月外,每个月有3天为日期个位为0
//则 366-(12*3-1)=331
// 然后没有然后了。
//完整输出全部结果:
#include <iostream>
using namespace std;
int a[13]= {-1,31,28,31,30,31,30,31,31,30,31,30,31};
bool leap(int y){
return y%4==0&&y%100!=0||y%400==0;
}
int main()
{
int y1,y2,y3,y4,m,d,sum=0;
for(int i=1000; i<=9999; i++) {
y1=i/1000; //年份的千位
y2=(i/100)%10; //年份的百位
y3=(i/10)%10; //年份的十位
y4=i%10; //年份的个位
m=y4*10+y3; //对称后的月份数
if(m>0&&m<=12) {
d=y2*10+y1; //对称后的日期数
if(d<=a[m]||leap(i)&&m==2&&d==29) { //关于闰年,其实只有一次:92200229
sum++; //累加符合条件的对称数
cout<<i<<y4<<y3<<y2<<y1<<endl;
}
}
}
cout<<sum<<endl;
return 0;
}
3.兴趣小组
A.txt:
12894792, 92774113, 59529208, 22962224, 02991600, 83340521, 87365045,
40818286, 16400628, 39475245, 55933381, 76940287, 61366748, 95631228,
17102313, 50682833, 61562613, 87002524, 83062019, 51743442, 61977890,
32010762, 69680621, 87179571, 81761697, 32364296, 07833271, 36198035,
26588918, 84046668, 43059468, 73191775, 56794101, 00454780, 11141030,
10008994, 35072237, 44945158, 53959980, 75758119, 18560273, 35801494,
42102550, 22496415, 03981786, 34593672, 13074905, 07733442, 42374678,
23452507, 98586743, 30771281, 17703080, 52123562, 05898131, 56698981,
90758589, 18238802, 18217979, 04511837, 75682969, 31135682, 55379006,
42224598, 98263070, 40228312, 28924663, 11580163, 25686441, 45944028,
96731602, 53675990, 03854194, 14858183, 16866794, 40677007, 73141512,
32317341, 56641725, 43123040, 15201174, 62389950, 72887083, 76860787,
61046319, 06923746, 17874548, 46028629, 10577743, 48747364, 05328780,
59855415, 60965266, 20592606, 14471207, 70896866, 46938647, 33575820,
53426294, 56093931, 51326542, 94050481, 80114017, 33010503, 72971538,
22407422, 17305672, 78974338, 93209260, 83461794, 41247821, 26118061,
10657376, 42198057, 15338224, 50284714, 32232841, 26716521, 76048344,
23676625, 62897700, 69296551, 59653393, 38704390, 48481614, 69782897,
26850668, 37471053, 88720989, 51010849, 94951571, 60024611, 29808329,
70377786, 13899299, 09683688, 58218284, 46792829, 97221709, 45286643,
48158629, 57367208, 26903401, 76900414, 87927040, 09926730, 01508757,
15101101, 62491840, 43802529,
B.txt:
44894050, 34662733, 44141729, 92774113, 99208727, 91919833, 23727681,
10003409, 55933381, 54443275, 13584702, 96523685, 50682833, 61562613,
62380975, 20311684, 93200452, 23101945, 42192880, 28992561, 18460278,
19186537, 58465301, 01111066, 62680429, 23721241, 20277631, 91708977,
57514737, 03981786, 81541612, 07346443, 93154608, 19709455, 37446968,
17703080, 72378958, 66200696, 30610382, 89586343, 33152171, 67040930,
35696683, 63242065, 99948221, 96233367, 52593493, 98263070, 01418023,
74816705, 89375940, 58405334, 96731602, 84089545, 16866794, 94737626,
01673442, 70548494, 13638168, 08163691, 11106566, 64375392, 40267902,
00897705, 56447313, 54532235, 94738425, 66642634, 83219544, 40546096,
66924991, 20592606, 96037590, 73434467, 70896866, 91025618, 57892091,
08487641, 32500082, 84412833, 23311447, 38380409, 79957822, 72971538,
69645784, 91863314, 73099909, 93209260, 83461794, 81378487, 30423273,
22233715, 32232841, 26716521, 03511221, 29196547, 58263562, 56233305,
52547525, 55812835, 87253244, 52484232, 80837360, 94098464, 52028151,
53267501, 66381929, 84381316, 59788467, 09683688, 67082008, 71605255,
80654064, 21434307, 45286643, 76556656, 82465821, 57367208, 79218980,
48460468, 59170479, 46046391, 43043164, 96544490, 83340521, 70837892,
18926791, 40818286, 28936302, 11489524, 51031183, 73860337, 13241219,
09025448, 10718828, 76360986, 26031606, 76558053, 97726139, 46473415,
48406387, 23625539, 86756012, 35164187, 49161302, 78082834, 35072237,
08602486, 29815841, 56562216, 77684187, 81751704, 20160464, 50407962,
27786415, 19893526, 00934129, 37759498, 52636463, 25666982, 43262852,
38393436, 02581136, 29323250, 56950657, 05898131, 95286262, 75574581,
54057961, 06703896, 90758589, 57782642, 34492535, 41919697, 06395464,
10993500, 81212949, 34017532, 69569396, 99009936, 57129610, 67401593,
71044018, 62076698, 29533873, 71936325, 86874388, 26545032, 35695544,
30433724, 53127345, 72887083, 25390873, 63711546, 06923746, 27783723,
33199575, 35929698, 16491251, 18276792, 62744775, 92096155, 06336570,
56141974, 73007273, 31416832, 00171057, 64176982, 46938647, 58460388,
69972026, 73724304, 27435484, 51568616, 15531822, 47788699, 11818851,
41594694, 83561325, 43107163, 56965375, 10557343, 26118061, 74650126,
90076467, 10657376, 49901436, 03425162, 61164599, 15797769, 05427896,
14444084, 36795868, 18079449, 59653393, 72942548, 06763077, 33895610,
94892653, 12085268, 65174140, 79567366, 23020126, 74290047, 13498869,
21696323, 27724594, 54941003, 38229841, 07050068,
C.txt:
13404901, 39952424, 47847739, 94939581, 13809950, 70966043, 11161555,
17102313, 47079425, 50682833, 74154313, 61562613, 93200452, 37103342,
18479435, 32502597, 36198035, 54210010, 73191775, 48358178, 85544503,
05996766, 54651623, 52113220, 27465181, 23871783, 22496415, 54107041,
65899605, 56528700, 82671109, 61176034, 42374678, 51612628, 63329997,
56591652, 04552733, 12789324, 89586343, 51935014, 38611966, 43916409,
70996050, 98263070, 01418023, 65345049, 21734275, 76846198, 71506230,
00833171, 67128139, 41367555, 64769510, 44010700, 16475199, 93164325,
09386162, 95324041, 80688223, 67629139, 79552617, 76219736, 50368644,
45096021, 54972488, 63779011, 28862942, 73145521, 74078605, 66924991,
12806850, 02171001, 70896866, 73434467, 08487641, 44415025, 32500082,
84412833, 83896188, 52243759, 49191410, 38744339, 48079796, 44937032,
06267501, 81866886, 38575984, 25978688, 78974338, 41247821, 12356966,
64842303, 79127158, 02366944, 68000570, 12426275, 96409230, 00705972,
08266503, 83820884, 08831807, 43273308, 23216105, 29196547, 95160161,
05553537, 52182214, 32641346, 91553427, 24436506, 77433749, 01979664,
52028151, 88985343, 01761499, 76203088, 63237368, 23405334, 59788467,
09683688, 67755443, 29946533, 12053603, 00437479, 15200030, 45286643,
93537527, 82465821, 57367208, 53899751, 15354933, 97760830, 68933762,
80220545, 01892750, 39868288, 21524323, 69716610, 65083815, 78048499,
03227391, 83340521, 87365045, 71720254, 51031183, 89168555, 08503028,
37086236, 25103057, 87002524, 22808816, 80928090, 90741678, 15993372,
99117082, 49938176, 21755083, 86903426, 87830263, 53959980, 75758119,
59781354, 58679691, 25666982, 56307643, 47180521, 62776522, 78136608,
44882734, 90758589, 08075999, 66303819, 23480347, 11580163, 87080118,
18329165, 92514163, 89404632, 92377859, 03912329, 17499963, 59699979,
79876366, 63894807, 37857001, 86003935, 90087123, 29433345, 80298948,
61531153, 61046319, 37839841, 19421134, 48747364, 35196916, 62484573,
59907079, 36845702, 21631642, 72739317, 26283700, 80114017, 76639390,
29154110, 35159758, 47788699, 11818851, 56520669, 36396767, 36031167,
83817428, 10657376, 90076467, 14676452, 11024560, 16327605, 76048344,
14444084, 95452011, 99612346, 65172562, 84813675, 88618282, 38704390,
27998014, 63859011, 33787505, 60024611, 16229880, 13899299, 35240335,
29173227, 45036451, 66177893, 82658333, 43100730, 44520187, 74290047,
85013538, 09926730, 27724594, 95148523, 20503000, 64390907, 26006953,
98116293, 97457666, 29017396, 04634371, 70791589,
首先要知道用记事本替换功能把逗号变为空格啊!这样控制输入
/* 读取文件简单操作
FILE *f1;//设置一个文件指针
f1=fopen(“A.txt”,“r”);//将文件指针指向具体文件(“文件路径”,“操作方”)
fscanf(f1,"%d",&temp)//从f1指向的文件里读数据赋值给temp(和从运行窗口输入值类似)
fclose(f1);//操作完毕记得关闭文件指针
*/
//思路:用文件读入获得三个数组,A、B交集放到AB集合,AB集合长度-ABC交集长度即为答案
#include <iostream>
#include <vector>
using namespace std;
const int maxn=1e5+10;
int main()
{
int tmp,num=0;
vector<int> a,b,c,ab;
FILE *f1,*f2,*f3; //打开三个文件的文件指针
//1、读取文件
f1=fopen("A.txt","r"); f2=fopen("B.txt","r"); f3=fopen("C.txt","r");
while(fscanf(f1,"%d",&tmp)!=EOF)
a.push_back(tmp);
while(fscanf(f2,"%d",&tmp)!=EOF)
b.push_back(tmp);
while(fscanf(f3,"%d",&tmp)!=EOF)
c.push_back(tmp);
//2、将A,B共同拥有的元素放入ab集合;
for(int i=0; i<a.size(); i++)
for(int j=0; j<b.size(); j++)
if(a[i]==b[j])
ab.push_back(a[i]);
//3、通过num记录ab集合和c集合共同拥有的元素
for(int i=0; i<ab.size(); i++)
for(int j=0; j<c.size(); j++)
if(ab[i]==c[j])
num++;
//4、ab集合元素个数-num 即为答案 20
//cout<<a.size()<<" "<<b.size()<<" "<<c.size()<<" "<<endl;
cout<<ab.size()-num;
fclose(f1); fclose(f2); fclose(f3);
return 0;
}
//20
//思路:和解法1一样,将A、B交集放到AB集合,AB集合长度-ABC交集长度即为答案
//注意:采用“ctrl”+“z”的方式退出数据读取的过程
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int temp,num=0,cur=0;
int a[4][500]; //存放数据的四个数组
int len[4]; //四个数组各自的长度
memset(len,0,sizeof(len)); //长度初始化为0
while(scanf("%d,",&temp)!=EOF){ //将文本中“,”替换为“ ”后直接复制粘贴获取数据
if(temp==-1) cur++; //在每组数据之间手动添加“-1”表示间隔
a[cur][len[cur]++]=temp;
}
for(int i=0; i<len[0]; i++) {
for(int j=0; j<len[1]; j++) {
if(a[0][i]==a[1][j]) {
a[3][len[3]++]=a[0][i];//A,B同时拥有的元素放入a[3];
}
}
}
for(int i=0; i<len[3]; i++) {
for(int j=0; j<len[2]; j++) {
if(a[3][i]==a[2][j]) {
num++; //记录参加了ABC三个小组的人数
}
}
}
//cout<<len[0]<<" "<<len[1]<<" "<<len[2]<<" "<<len[3]<<endl;
cout<<len[3]-num;
return 0;
}
//思路:将编号作为数组下标,遍历所有可能的编号数字,记录A&&B&&!C的编号出现次数
#include <iostream>
using namespace std;
const int maxn=1e8+10;
bool book[3][maxn]; //宏定义默认初始化为0,但建议还是memset()初始化一下更好一点
int main()
{
int i,tmp,cur=0,ans=0;
while(scanf("%d,",&tmp)!=EOF){ //将文本中“,”替换为“ ”后直接复制粘贴获取数据
if(tmp==-1) cur++; //在每组数据之间手动添加“-1”表示间隔
else book[cur][tmp]=1; //当前第cur个数组中的编号tmp存在,记为1
}
for(i=0;i<100000000;i++){ //遍历范围内所有可能出现的编号
if(book[0][i]&&book[1][i]&&!book[2][i]) ans++;
}
cout<<ans<<endl;
return 0;
}
4.方格分割【第八届蓝桥杯C/C++ B组省赛第4题】
6x6的方格,沿着格子的边线剪开成两部分。
要求这两部分的形状完全相同。
如图:p1.png, p2.png, p3.png 就是可行的分割法。
试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。
请提交该整数,不要填写任何多余的内容或说明文字。
从方块网格线的正中心开始深搜,每走一步便将当前位置和其中心对称位置标记;
走到边界,便记录一种裁剪情况;由于旋转对称图形的特性,最后输出的结果需要除4!
#include <bits/stdc++.h>
using namespace std;
const int N=6; //正方形边长为6
int book[7][7];
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; //右下左上
int ans=0;
void dfs(int x,int y){
if(x==0||y==0||x==N||y==N){
ans++; //到达边界即一种裁剪方式
return ; //返回上层
}
for(int i=0;i<4;i++){
int x1=x+dir[i][0],y1=y+dir[i][1]; //循环选择四个方向中的任一方向
if(!book[x1][y1]){ //未走过
book[x1][y1]=book[N-x1][N-y1]=1; //当前位置和中心对称位置标为已走过
dfs(x1,y1); //继续深搜
book[x1][y1]=book[N-x1][N-y1]=0; //从当前位置退出,重新标记该位置没走过
}
}
}
int main(){
memset(book,0,sizeof(book)); //初始化数组为0,都没走过
book[N/2][N/2]=1; //中心点先标记后访问
dfs(N/2,N/2);
cout<<ans/4<<endl;
return 0;
}