Cerința
Fie un număr n natural nenul, determinați un număr k și o combinație de semne + sau -(mai exact o succesiune x1,x2,…,xk unde xi∈{−1,1}, astfel încat să aibă loc relația: n=x1⋅12+x2⋅22+…+xk⋅k2. Să se afișeze o succesiune de k semne + sau - care să îndeplinească relația de mai sus.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran o succesiune de k semne + sau - care să îndeplinească relația.
Restricții și precizări
1 ≤ n ≤ 100
Exemplu 1:
Intrare
3
Ieșire
-+--+
Exemplu 2:
Intrare
2
Ieșire
---+
gstance:
poate cineva sa imi ataseze solutia oficiala la aceasta problema
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
using namespace std;
int gen(int k,int l){
int s = 0;
for(int i = 1; i <= l; i++){
s += ((k&1) == 1 ? 1 : -1)*i*i;
k>>=1;
}
return s;
}
void writebin(int x, int l){
for(int i = 1; i <= l; i++){
cout << ((x&1) ? '+' : '-');
x>>=1;
}
}
int main(){
int n;
cin >> n;
int s;
bool f = false;
for(int j = 1; j <= 15; j++){
for(int k = 0; k < 1<<j; k++){
s = gen(k, j);
if(s==n){
f = true;
writebin(k,j);break;}
}
if(f)break;
}
}
bafta fratelo :)
using namespace std;
int main()
{
int n;
cin>>n;
switch(n%4)
{
case 1: cout<<"+"; break;
case 2: cout<<"---+"; break;
case 3: cout<<"-+--+";
}
for(int i=0;i cout<<"+--+";
return 0;
}
Alte întrebări interesante
Fizică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Fizică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă