C解两道题
偷懒间做了两道题,供大家把玩吧。我的解法不见得最好,但是是可以work的。大家有解法可以贴到评论里,我们可以切磋下。
1.If p is the perimeter of a right angle triangle with integral length sides, {a,b,c}, there are exactly three solutions for p = 120. click
{20,48,52}, {24,45,51}, {30,40,50}
For which value of p <=1000, is the number of solutions maximised?
翻译过来就是:
如果p是这样一个数,满足三元组{a,b,c}之和是p,且a,b,c能组成直角三角形的三个边。当p=120的时候,且有三个解:
{20,48,52}, {24,45,51}, {30,40,50}
那么在p<=1000以内,满足以上条件的解的个数最多的p是几?
答案:840.

int a1[3000]={};
for(int a=1;a<1000;a++)
for(int b=a;b<1000;b++)
for(int c=b;c<1000;c++)
if(((a*a)+(b*b)==(c*c))&&((a+b+c)<=1000))
a1[a+b+c]++;
for(int i=0;i<3000;i++)
if(a1[i]>=3)
cout<<i<<":"<<a1[i]<<endl;
2.A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:
012 021 102 120 201 210
What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9? click
翻译:A permutation is an ordered arrangement of objects。(这句我真翻译不好,大意就是排列的定义)比如,3124是数字1,2,3,4的一种可能排列。如果把所有的排列按照数字或者字母列出来,我们称为字典顺序。数字0,1,2的字典排序为:
012 021 102 120 201 210
那么数字0,1,2,3,4,5,6,7,8,9的字典排序的第1000000(100万)个排列数字是几?
答案:2783915460(貌似这个可以用笔算出来,我稍后再给出计算方法,或者哪位大大给算算。)

__int64 m1=123456789,m2=9876543210;
__int64 count=0;
for(m1=123456789;m1<m2;m1++)
{
__int64 i=m1;
__int64 a[10]={};
__int64 len=0;
while(i!=0)
{
__int64 d=i%10;
a[d]=1;
i=i/10;
len++;
}
bool flag=true;
for(__int64 k=len==9?1:0;k<10;k++)
{
if(a[k]==0)
{
flag=false;
break;
}
}
if(flag)
{
count++;
if(count<=1000000)
{
cout<<count<<"::"<<m1<<endl;
}
else
break;
}
}
附上笔算解法:
设最终的数字为X=??????????
假设0~9这10个数字排队,排了10对,每队的排头分别是0~9,队伍是从小向大的方向站队。
因为确定排头后,每队剩下的9个数字全排列就是9!=3628880.
每队都有9!个数字,那么第1000000个应该是在2开头的队里,从来确定X的首位数字是2?????????.
9!*3=1088640.那么X应该距离2队的队尾1088640-100000=88640.也就是说X在2队距离队尾88640个的位置之后。
剩下的9个数字9,8,7,6,5,4,3,1,0继续站队。继续按照上面的方式排队,确定排头,那么每队的人数是8!=40320.那么从后向前数的话,X应该在队伍7里第88640-40320*2=8000个位置之后。
好了,X的第2个数字也确定了,X=27????????。
继续,9,8,6,5,4,3,1,0继续站队。同样的确定排头,每队是7!=5040个。那么X在队伍8里第8000-5040*1=2960的位置之后。所以,X的第3位数字定了,X=278???????
继续,9,6,5,4,3,1,0排队,每队是6!=720,同样,X在队伍3里第2960-720*4=80的位置之后。X的第4个数字确定,X=2783??????
继续,9,6,5,4,1,0排队,每队是5!=120个数字,那么毫无疑问,X在队伍9里第80-120*0=80的位置之后。X=27839?????
继续,6,5,4,1,0排队,每队是4!=24个数字,X在队伍队伍1里第80-24*3=8之后。X=278391????
还剩6,5,4,0,每队是3!=6个 数字,那么X在队伍5里第8-6*1=2之后。X=2783915???
剩下6,4,0,排队是2!=2个数字。所以X在6队之后第一个,4队里的第一个。这时候的全排列为:640,604,460,406,064,046.
所以最后X=2783915460
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2009-06-03 也看有道第2题,无代码无真相