我的目标是找到4到666554之间的所有数字的总和,仅包括4,5,6.
SUM = 4+5+6+44+45+46+54+55+56+64+65+66+.....................+666554.
Run Code Online (Sandbox Code Playgroud)
简单的方法是运行循环并仅添加由4,5和6组成的数字.
long long sum = 0;
for(int i=4;i <=666554;i++){
/*check if number contains only 4,5 and 6.
if condition is true then add the number to the sum*/
}
Run Code Online (Sandbox Code Playgroud)
但它似乎效率低下.检查数字是由4,5和6组成需要时间.有没有办法提高效率.我已经尝试了很多,但没有找到新的方法.请帮助.
功能定义
f <- function(x) {
x + x*x
}
Run Code Online (Sandbox Code Playgroud)
3种方法,即body,formals与environment可用于修改
身体
> body(f)
{
x + x * x
}
Run Code Online (Sandbox Code Playgroud)
如果我们想改变身体使用 body
> body(f) <- expression({x*x*x})
> f
function (x)
{
x * x * x
}
Run Code Online (Sandbox Code Playgroud)
看到它改变了.
甲缩醛
如果想使用改变的参数formals来(x = 3, y = 6)
> formals(f) <- list(x = 3, y = 4)
> f
function (x = 3, y = 4)
{
x * x * x
}
Run Code Online (Sandbox Code Playgroud)
看到它改变了. …
我有一个S由a's和b's 组成的字符串.执行以下操作一次.目的是获得按字典顺序排列的最小字符串.
操作: 正好反转一个子串S
例如
S = abab那么Output = aabb(ba字符串反向S)S = abba那么Output = aabb(bba字符串反向S)我的方法
情况1:如果输入字符串的所有字符都相同,则输出将是字符串本身.
案例2:如果S是形式,aaaaaaa....bbbbbb....那么答案S就是它自己.
否则:查找第一次出现b在S说的位置是我.字符串S看起来像
aa...bbb...aaaa...bbbb....aaaa....bbbb....aaaaa...
|
i
Run Code Online (Sandbox Code Playgroud)
为了获得按字典顺序排列的最小字符串,将被反转的子字符串从索引i开始.请参阅下面的可能结束j.
aa...bbb...aaaa...bbbb....aaaa....bbbb....aaaaa...
| | | |
i j j j
Run Code Online (Sandbox Code Playgroud)
S[i:j]为每个j 反转子字符串并找到最小的字符串.该算法的复杂性将是O(|S|*|S|)其中|S|的字符串的长度.
有没有更好的方法来解决这个问题?可能是O(|S|)解决方案. …
我正在从博客文章中学习data.table属性.我试图理解"摘要表(简短和窄)"下的部分,首先是将data.frame(mtcars)强制转换为data.table:
> data <- as.data.table(mtcars)
> data <- data[,.(gear,cyl)]
> head(data)
gear cyl
1: 4 6
2: 4 6
3: 4 4
4: 3 6
5: 3 8
6: 3 6
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好.
现在我试过这个 data[, gearsL := list(list(unique(gear))), by=cyl]
> head(data)
gear cyl gearsL
1: 4 6 4,3,5
2: 4 6 4,3,5
3: 4 4 4,3,5
4: 3 6 4,3,5
5: 3 8 3,5
6: 3 6 4,3,5
Run Code Online (Sandbox Code Playgroud)
我能够理解唯一(齿轮)但无法理解什么列表(列表(唯一(齿轮))正在做什么.
给定:k个不同的素数表示a1,a2,.....,ak
目标:将给定素数的乘积写为完美平方之和所需的最小正方形数.
例子:
k = 2, a1 = 3, a2 = 5
a1*a2 = 15 = 9 + 4 + 1 + 1 即总和4个完美的正方形
k = 3, a1 = 2, a2 = 5, a3 = 11
a1*a2*a3 = 110 = 100 + 9 + 1 即总和3个完美的正方形
我的算法
让 p = a1*a2*...........*ak
counter = 0
while p != 0:
find the largest perfect square <= p say z
p = p-z
counter = counter + 1
return counter
Run Code Online (Sandbox Code Playgroud)
我已经测试了几个例子.对我而言似乎是正确的.但在少数例子的基础上进行概括是不正确的.如何证明这一点(如果算法正确)?
情况1:
rm(list = ls())
foo <- function(x = 6){
set <- function(){
x <- x*x}
set()
x}
foo()
# [1] 6
Run Code Online (Sandbox Code Playgroud)
案例2:
rm(list = ls())
foo <- function(x = 6){
set <- function(){
x <<- x*x}
set()
x}
foo()
# [1] 36
Run Code Online (Sandbox Code Playgroud)
我读到该<<-运算符可用于为与当前环境不同的环境中的对象赋值.它表示<<-可以对不在当前环境中的对象进行对象初始化.我想问一下可以使用哪个环境的对象进行初始化<<-.在我的情况下环境是foo功能环境,可以<<-初始化函数外部的对象或当前环境中的对象吗?完全混淆何时使用<-以及何时使用<<-.
我试图采取一个Rcpp::CharacterMatrix并将每一行转换为自己的元素Rcpp::List.
但是,我编写的函数有一个奇怪的行为,其中列表的每个条目对应于矩阵的最后一行.为什么会这样?这是一些指针相关的概念吗?请解释.
功能:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
List char_expand_list(CharacterMatrix A) {
CharacterVector B(A.ncol());
List output;
for(int i=0;i<A.nrow();i++) {
for(int j=0;j<A.ncol();j++) {
B[j] = A(i,j);
}
output.push_back(B);
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
测试矩阵:
这是A传递给上述函数的矩阵.
mat = structure(c("a", "b", "c", "a", "b", "c", "a", "b", "c"), .Dim = c(3L, 3L))
mat
# [,1] [,2] [,3]
# [1,] "a" "a" "a"
# [2,] "b" "b" "b"
# [3,] "c" "c" "c"
Run Code Online (Sandbox Code Playgroud)
输出:
上面的函数应该将此矩阵作为输入并返回矩阵行列表,如下所示:
char_expand_list(mat)
# …Run Code Online (Sandbox Code Playgroud) #include<iostream>
using namespace std;
int main(){
int x = 1967513926;
int y = 1540383426;
cout<<x+y;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以上两个整数的和是3507897352 <2 ^ 32.So为什么错误的答案?请帮忙...
在R中,我们可以使用唯一方法来查找唯一行
> data <- matrix(c(1,1,0,1,1,1,0,1),ncol = 2)
> data
[,1] [,2]
[1,] 1 1
[2,] 1 1
[3,] 0 0
[4,] 1 1
> unique(data)
[,1] [,2]
[1,] 1 1
[2,] 0 0
Run Code Online (Sandbox Code Playgroud)
我们怎样才能arma::mat在Rcpp中做到这一点?这里唯一函数返回唯一元素而不是唯一行.
//[[Rcpp::export]]
int Class_data(SEXP data) {
/*
return 0 if class of data is matrix
else return -1
*/
}
Run Code Online (Sandbox Code Playgroud)
data在上述情况下如何确定类?如果data属于matrix类返回0,则返回-1.
我的目标是找到(p连续数的最小值)*p的最大值.这里1 <= p <= N并且1 <= N <= 100000并且1 <=数字<= 1000000.I已经部分地解决了问题.但是在某些情况下我得到了这个运行时错误.
"在抛出'std :: bad_alloc'的实例后调用终止what():std :: bad_alloc此应用程序已请求Runtime以不寻常的方式终止它.请联系应用程序的支持团队以获取更多信息."
我发现错误是因为程序试图访问不允许的内存.但我没有得到哪部分代码试图访问未分配的内存.请帮助我.
#include <iostream>
using namespace std;
int main(){
int N=0;
cin>>N;
int **A,*B,i,j,num;
A = new int*[N];
for(i=0;i<N;i++)
A[i] = new int[N]();
B = new int[N]();
for(i=0;i<N;i++){
cin>>num;
A[0][B[0]] = num;
for(j=0;j<B[0];j++){
A[j+1][B[j+1]] = min(A[j][B[j+1]],A[j][B[j+1]+1]);
B[j+1]++;
}
B[0]++;
}
long long maxim = 0;
for(i=0;i<N;i++){
for(j=0;j<B[i];j++){
if(A[i][j]*(i+1) > maxim)
maxim = A[i][j]*(i+1);
}
}
cout<<maxim;
delete []A;
delete []B;
return 0;
}
Run Code Online (Sandbox Code Playgroud)