怎么做好营销网站开发,做网站关键词优化的公司,基于大数据的精准营销,腾讯微信官网F - Heron and His Triangle UVALive - 8206
题意#xff1a;
给你应该n#xff0c;然后求一个最小的t#xff0c;问长度为t-1#xff0c;t#xff0c;t1所组成的三角形的面积为整数,tn
题解#xff1a;
这题我一开始被题目的-1给迷惑了#xff0c;以为筛出所有…F - Heron and His Triangle UVALive - 8206
题意
给你应该n然后求一个最小的t问长度为t-1tt1所组成的三角形的面积为整数,tn
题解
这题我一开始被题目的-1给迷惑了以为筛出所有的T然后我写了暴力求出尽可能多的t如下
if(n4)printf(4\n);else if(n14)printf(14\n);else if(n52)printf(52\n);else if(n194)printf(194\n);else if(n724)printf(724\n);else if(n2702)printf(2702\n);else if(n10084)printf(10084\n);else if(n37634)printf(37634\n);else if(n140452)printf(140452\n);然后题目就没进展了最后看了答案我吐了。。。根据上面的数推出公式 a[n] a[n-1] *4a[n-2] 哭哭哭 孩子推不出来啊
代码
#include iostream
#include cstdio
#include cstring
#include cmath
#include vector
#include algorithmusing namespace std;char num[500][40];//大数乘法
void mul(char a[], int x,char (res)[40])
{int lenstrlen(a);int flag0;char ans[40];for(int ilen-1;i0;i--){int val(a[i]-0)*4flag;ans[i]val%100;flagval/10;}ans[len]\0;res[0]\0;if(flag){res[0]flag0;res[1]\0;strcat(res,ans);}else{strcpy(res,ans);}
}//大数减法
void sub(char (a)[40], char b[])
{char ans[40];char tmp[40];int lenastrlen(a);int lenbstrlen(b);for(int i0;ilena-lenb;i){ans[i]0;}ans[lena-lenb]\0;strcat(ans,b);strcpy(tmp,b);strcpy(b,ans);int lenmax(lena,lenb);int flag0;memset(ans,0,sizeof(ans));for(int ilen-1;i0;i--){int vala[i]-b[i]-flag;if(val0){ans[i]val100;flag1;}else{ans[i]val0;flag0;}}ans[len]\0;strcpy(a,ans);strcpy(b,tmp);
}int judge(char a[])
{int lenstrlen(a);if(len32)return 1;elsereturn 0;
}//比较两个数大小
int compare(char a[], char b[])
{int lenastrlen(a);int lenbstrlen(b);if(lenalenb)return 1;else if(lenalenb)return 0;for(int i0;ilena;i){if(a[i]b[i])return 1;else if(a[i]b[i])return 0;}return 2;
}int main()
{int T;char n[40];//打表strcpy(num[0],4);strcpy(num[1],14);for(int i2;;i){mul(num[i-1],4,num[i]);sub(num[i],num[i-2]);if(judge(num[i]))break;}scanf(%d,T);while(T--){scanf(%s,n);if(strcmp(n,1)0||strcmp(n,2)0||strcmp(n,3)0||strcmp(n,4)0){printf(4\n);continue;}int flag0;int cnt;for(int i0;;i){int xcompare(n,num[i]);if(flag1x!1){cnti;break;}if(x1)flag1;}printf(%s\n,num[cnt]);}return 0;
}import java.io.*;
import java.util.*;import java.math.*;public class Main {static final int MAXN128;static BigInteger []x new BigInteger[MAXN];static BigInteger []y new BigInteger[MAXN];static BigInteger []t new BigInteger[MAXN];static void init() {x[0]BigInteger.valueOf(2);y[0]BigInteger.valueOf(1);t[0]BigInteger.valueOf(4);BigInteger dBigInteger.valueOf(3);for(int i1;iMAXN;i) {x[i]x[0].multiply(x[i-1]).add(y[i-1].multiply(d));y[i]y[0].multiply(x[i-1]).add(x[0].multiply(y[i-1]));t[i]x[i].multiply(BigInteger.valueOf(2));}}public static void main(String []args) {Scanner innew Scanner(System.in);int casin.nextInt();BigInteger n;init();while(cas0) {--cas;nin.nextBigInteger();for(int i0;iMAXN;i) {if(n.compareTo(t[i])!1) {System.out.println(t[i]);break;}}}}
}