求一個數最少能表示成幾個數的平方和(比如5=1+4,返回2)
bool is_sqrt(long long n) { int m = sqrt(n); if (m*m == n) return true; else return false; } int solve(long long n) { if (is_sqrt(n)) return 1; while (n % 4 == 0) n /= 4; if (n % 8 == 7) return 4; for (int i = 0; i*i < n; i++) { if (is_sqrt(n - i*i)) return 2; } return 3; }
相關推薦
求一個數最少能表示成幾個數的平方和(比如5=1+4,返回2)
bool is_sqrt(long long n) { int m = sqrt(n); if (m*m == n) return true; else
2的n次冪,判斷一個數是否能寫成m個2相乘,LeetCode 231號問題 給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。
2的n次冪,判斷一個數是否能寫成m個2相乘,LeetCode 231號問題 給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。 示例 1: 輸入: 1 輸出: true 解釋: 20 = 1 示例 2: 輸入: 16 輸出: true 解釋: 24 = 16 示例 3:
給定一個正整數n,求出0到n中有幾個數滿足其二進位制表示不包含連續的1
樣例: 輸入:5 輸出:5 0 01 10 100 101滿足,11不滿足。 那麼6144呢? 答案是610,怎麼去計算呢? 思路:查詢從0到n中有多少個數包含連續的1,然後在總數中去掉這些情況,得到
LightOJ - 1117 Helping Cicada (求1~n有多少個數不能被這m個數中任意一個整除)(容斥+狀態壓縮)
vol == show fine cst href main http color 題意:http://www.lightoj.com/volume_showproblem.php?problem=1117 考慮1個數k,1~n有[n/k]個數能被k整除,[a]表示a向下取
一隻手能表示的最大的數是多少?
一隻手有5個手指頭,每個代表1,最大能表示5 如果規定小指頭代表1,大拇指代表5,每個指頭分別代表12345,那麼1+2+3+4+5=15,一隻手能代表15 如果規定五個指頭分別代表1,2,4,8,16,那麼一隻手能代表31 如果每個指節代表不同的數,一隻手有的
五十道程式設計小題目 --- 43 求0—7所能組成的奇數個數(排列組合) java
【程式43】 題目:求0—7所能組成的奇數個數。 演算法思想:這個問題其實是一個排列組合的問題,設這個數為sun=a1a2a3a4a5a6a7a8,a1-a8表示這個數的某位的數值,當一個數的最後一位為奇數時,那麼這個數一定為奇數,不管前面幾位是什麼數字。如果最後一位
java 求0—7所能組成的奇數個數。
題目: 求0—7所能組成的奇數個數。 程式碼: public class Prog43{ public static void main(String[] args){
每個數均可表示成若干個完全平方數(1,4,9,16,25……)之和
JAVA程式設計:每個數均可表示成若干個完全平方數(1,4,9,16,25……)之和,完全平方數是可重複,求出n的一種組合要求完全平方數的個數最少。如:12=4+4+4;13=4+9 package test; import java.util.Scanner; publi
從一個數組中隨機取出幾個數,切不重複!
import java.util.Arrays; public class suiji { public static void main(String[] args) { int[] arrays=new int[33];
下列給定程序中函數fun的功能是:用下面的公式求π的近似值,直到最後一項的絕對值小於指定的數為止,π/4=1-1/3+1/5-1/7+...,例如,程序運行後,輸入0.0001,程序輸出3.1414
print fab stdio.h 運行 return printf main blog 程序 #include <math.h> #include <stdio.h> float fun ( float num ) { int s
c語言 寫一個函式,輸入n,求斐波拉契數列的第n項(5種方法,層層優化)
寫一個函式,輸入n,求斐波拉契數列的第n項。 斐波拉契數列:1,1,2,3,5,8...,當n
已知n行資料,自上而下為第1行,第2行.....第n行。第i行資料有i個,求從第1行至第n行的最短路徑及路徑長度。
#include <stdio.h> //主函式 void main(){int a[50][50];//儲存資料的陣列int value[50][50];//儲存計算後的值int sataus[50][50];//儲存分支的值int min;//儲存最後一行中
【Android】一步一步教你從Eclipse移植專案到Android Studio(1.4)
今天搞了差不多一整天,終於成功把原來在Eclipse的專案移植到了Android Studio上面。其實網上關於如何做移植已經有不少文章了,而且Android Develop的官網也有介紹,但是差不多網上的版本都已經過時,因為Android Studio和Gradle的版本
c語言:寫一個函式,輸入n,求斐波拉契數列的第n項(5種方法,層層優化)
寫一個函式,輸入n,求斐波拉契數列的第n項。斐波拉契數列:1,1,2,3,5,8...,當n大於等於3時,後一項為前面兩項之和。解:方法1:從斐波拉契數列的函式定義角度程式設計#include<stdio.h>int fibonacci(int n){int nu
把一根木棍折成三段,求這三段能組成一個三角形的概率
測試今天剛遇到的 概率 問題: 一根木棍折成三段,求這三段能組成一個三角形的概率 但答案為 0.25.即下面程式碼裡的 pro #include<stdio.h> #include<stdlib.h> #include<time.h> #include
求一個數是幾進位制
例題1(題來自圖論刷題) 在某系統中,等式15*4=112成立,則系統採用的是()進位制? A. 6 B. 7 C. 8 D. 9 在這個題中,我們用兩個乘數的個位相乘,即5*4=20
將一個數由幾個數的階乘和表示
問題描述:比如145=1!+4!+5!這樣,1400就沒有合適的階乘數的和相加表示。 思考:簡單的回溯即可,取該數或者不取該數,不可重複。我事先先儲存了前50個數的階乘。 #include <iostream> using namespace std; int
有n個人圍成一圈,從第1個人開始,1、2、3報數,報至3出局,餘下的人繼續從1、2、3報數,問:最後剩下的一人是原來的第幾號?同時求出被淘汰編號的序列。(要求:用迴圈佇列解決該問題。)
han.h: #include <iostream> #include <stdlib.h> #include "Status.h" using namespace std; typedef struct QNode {ElemType data;struct QNode *next;
求一個數的二進位制表示中1的個數和0的個數
在我複習的過程中,很多面試題,甚至筆試題中,都用到了多次求一個整數的二進位制表達中1的個數或者0的個數,網上的資料比較亂,我在此做個小記錄,算是自己的一點總結,也希望對大家有幫助! 1.1 求二進位制數中 1 的個數(java版——演算法轉換) public int getNumOf
求一個數組中第k大的數,要求不能另外申請空間,陣列順序不能被改變
這是一道今日頭條的面試題,當面試官提出這樣一道題目時。我想相信,大多數人都會這樣反應 1.是不是可以先排一下序,然後再求第k大的,然後就想到陣列順序不能被改變,然後否定了 2.是不是可以用小堆來做。我建立一個堆大小為k的小堆,然後把這些資料全部扔進小堆中,除了堆頂,其他的數