- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
作业是编写一个 C++ 程序,它接受输入数字 N 并输出序列中的第 N 个数字:
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 ...
这是我到目前为止想出的:
#include
sử dụng không gian tên std;
int chính()
{
long long n,k=1,result;
cin >> n;
if(n==1){
result=1;
}khác{
for(int i=1,j=1;;i=j,j=j+k){
if(n>i&&n<=j){
result=n-i;
phá vỡ;
}khác{
k++;
}
}
}
cout << result << endl;
}
这也是我之前写的:
#include
sử dụng không gian tên std;
int chính()
{
long long n,count=0,result;
cin >> n;
for(int i=1;;i++){
for(int j=1;j<=i;j++){
count=count+1;
if(count==n){
result=j;
phá vỡ;
}
}
if(count>=n){
phá vỡ;
}
}
cout << result << endl;
}
这两个都适用于较小的数字,但问题是我必须遵循约束:
1 <= n <= 10^12
所以当输入更大的数字时,程序输出解决方案的时间太长并且超过了时间限制,即 2 秒。我已经为此工作了 5 个小时,但我不知道如何改进这些程序以使其更快。我还想到了一个可以帮助确定这样一个序列中的第 N 个数的特定公式,但我似乎无法在 Internet 或我的数学书籍中找到任何相关信息。有人可以指出我的解决方案吗?我将不胜感激。
câu trả lời hay nhất
我们可以按照您的顺序对数字进行分组:
(1) (1, 2) (1, 2, 3) ...
数字的总量是
1 + 2 + 3 + ...
后者是等差级数,其和等于x*(x+1)/2
.
我们将找到完整组的数量 tôi
hiện hữun+1
之前- 序列中的第一个数字。 tôi
等于最大整数使得 k*(k+1)/2 <= n
.为了找到它,我们将求解二次方程:
x*(x+1)/2 = n
x^2 + x - 2*n = 0
我们假设这个方程的正根是 x'
.我们将其四舍五入为最接近的整数 tôi
.如果x' == k
(x'
是一个整数)就是答案。否则,答案是 n - k*(k+1)/2
.
Ví dụ c++hoàn thành:
double d = 1 + 8.0 * n;
double x = (-1 + sqrt(d)) / 2;
long long k = floor(x);
long long m = k*(k+1) / 2;
if (m == n) {
return k;
} khác {
return n - m;
}
解决方案有O(1)
时间复杂度。
关于c++ - 如何找到分形序列中的第 N 个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47260147/
Tôi thấy macro sau ở đây . static const char LogTable256[256] = { #define LT(n) n, n, n, n, n, n, n, n, n, n, n,
Câu hỏi này khó có thể giúp ích cho bất kỳ khách truy cập nào trong tương lai; nó chỉ liên quan đến một khu vực địa lý nhỏ, một thời điểm cụ thể hoặc một tình huống rất hẹp thường không áp dụng cho khán giả Internet toàn cầu. Để giúp làm cho câu hỏi này được áp dụng rộng rãi hơn, hãy truy cập
Vì vậy, tôi đã có thuật toán này và tôi cần tính toán độ phức tạp thời gian của nó như thế này cho i=1 đến n do k=i while (k<=n) do FLIP(A[k]) k
Có phải n được nâng lên lũy thừa thứ n (tức là n^n) là đa thức không? Có thể giải T(n) = 2T(n/2) + n^n bằng phương pháp chính không? Câu trả lời hay nhất Không những nó không phải là đa thức mà còn tệ hơn giai thừa. O(n^n) chiếm ưu thế O(n!). như nhau
Tôi đang nghiên cứu một thuật toán ánh xạ giữa các ký tự có dấu phụ (dấu ngã, dấu mũ, dấu mũ, âm sắc, caron) và các ký tự "đơn giản" của chúng. Ví dụ: ń ǹ ň ñ ṅ ņ ṇ
Chà..tôi đã bắt đầu học APL ngày hôm qua. Tôi đang xem video YouTube để tìm hiểu các ký hiệu khác nhau từ những điều cơ bản và tôi đang sử dụng NARS2000. Điều tôi muốn là in dãy Fibonacci. Tôi biết có một số mã, nhưng vì tôi chưa nghiên cứu gì nâng cao nên
Đã đóng cửa. Câu hỏi này lạc đề. Câu trả lời không được chấp nhận vào thời điểm này. Bạn muốn cải thiện câu hỏi này? Đã cập nhật câu hỏi để nó phù hợp với chủ đề về Stack Overflow. Đóng cửa 12 năm trước Cải thiện điều đó
Có ai có thể giúp tôi tìm hàm toán học phỏng đoán từ N * N * N → N nhận ba tham số x, y và z và trả về số n không? Tôi muốn biết hàm f và hàm nghịch đảo f' của nó, nếu tôi có n, tôi sẽ làm được bằng cách áp dụng f'(n)
Tình huống: Người dùng có thể nhập bất kỳ số cặp dấu ngoặc nào vào phương trình ở định dạng chuỗi. Tuy nhiên, tôi cần kiểm tra để đảm bảo rằng tất cả các dấu ngoặc đơn (hoặc ) đều có ký hiệu số nhân liền kề *. Do đó 3( phải là 3*( và )3 phải là )*3. tôi cần tất cả
Trong Java, biểu thức: n+++n dường như đánh giá giống như: n++ + n mặc dù +n là toán tử một ngôi hợp lệ có độ ưu tiên cao hơn toán tử + số học trong n + n. Vì vậy, trình biên dịch dường như cho rằng toán tử không thể là toán tử một ngôi
Khi tôi đọc câu hỏi này, tôi nhớ có người đã từng nói với tôi (nhiều năm trước) rằng từ góc độ của một người lắp ráp, hai thao tác này rất khác nhau: n = 0; n = n - n; Nếu vậy thì tại sao điều này lại xảy ra? EDIT: Như được chỉ ra bởi một số câu trả lời
Tôi đang cố tải một tệp đánh dấu bên ngoài trong Reveal.js, tệp này được viết để tôn trọng cú pháp dấu phân cách dữ liệu: Bạn có thể viết nội dung của mình dưới dạng một tệp riêng biệt và
Tôi đang cố gắng tìm ra cách sử dụng Javascript để tạo một chuỗi 11 ngẫu nhiên yêu cầu một chuỗi chữ cái/số và vị trí cụ thể. ----------------------------------------
Gần đây tôi tình cờ phát hiện ra một tài nguyên trong đó đệ quy loại 2T(n/2) + n/log n được MM tuyên bố là không thể giải được. Chỉ cho đến ngày nay tôi mới chấp nhận nó như một bổ đề khi một nguồn khác hóa ra lại mâu thuẫn (theo một nghĩa nào đó). Theo tài nguyên (dưới đây
đóng cửa. Câu hỏi này yêu cầu chi tiết hoặc rõ ràng. Câu trả lời không được chấp nhận vào thời điểm này. Bạn muốn cải thiện câu hỏi này? Thêm chi tiết và làm rõ câu hỏi bằng cách chỉnh sửa bài đăng này Đã đóng 8 năm trước. Cải thiện điều đó
Một đoạn mã tôi đã hoàn thành theo mẫu sau: for (i = 0; i < N; i++){ // O(N) //thực hiện một số xử lý... } Sort(array, array + N
Có cách nào để chứng minh rằng f(n) + g(n) = theta(n^2) hay là không thể? Giả sử f(n) = theta(n^2) & g(n) = O(n^2) Tôi đã thử như sau: f(n) = O(n^2) &
Vì vậy, hiện tại tôi đang cố gắng tính giá trị Pearson R và p cho một số dữ liệu mà tôi có. Điều này được thực hiện với đoạn mã sau: import numpy as np from scipy.stats import Pearson
Việc sắp xếp mặc định cho các cột ltree là văn bản. Ví dụ: Tôi có 3 cột trong bảng id, parentid và wbs. cột ltree - wbs lưu trữ 1.1.12, 1.1.1, 1.1.2 ở các hàng khác nhau. nhấn wbs
Mục tiêu của mình là viết chương trình tính số chữ số cần thiết để biểu diễn một số trong python, nếu mình chọn number = -1 hoặc bất kỳ số âm nào thì chương trình sẽ không kết thúc, đây là code của mình: number = -1 cnt = 0 trong khi (n
Tôi là một lập trình viên xuất sắc, rất giỏi!