My program worked correctly on N in 1 to 9, and incorrectly on numbers greater than 9 (error in string concatenation). I kept getting an error on test 2 until I fixed the error. Apparently, in test 2, the input is a number greater than 10. Try this test: in: 11 out: ((((((((((sin(1)+11)sin(1-sin(2))+10)sin(1-sin(2+sin(3)))+9)sin(1-sin(2+sin(3-sin(4))))+8)sin(1-sin(2+sin(3-sin(4+sin(5)))))+7)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10))))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10+sin(11)))))))))))+1 I have written the code the using user defined function thats why it has become much bigger. #include<Stdio.h> #include<math.h> int Sn(int n); int An(int a); int main() { int x; scanf("%d",&x); Sn(x); } int Sn(int n) { int j; if(n==1) {An(1); printf("+1");} else { for(j=1;j<n;j++) printf("("); for(j=1;j<=n;j++) {if(j==1) {An(j);printf("+%d)",n);} else if(j!=n) {An(j);printf("+%d)",n-j+1);} else {An(j);printf("+1");}}} } int An(int a) { int i,p; if(a==1) printf("sin(%d)",a); else {for(i=1;i<=a;i++) { p= pow(-1,i+1); if(i==1) printf("sin(%d",i); else if(p==1) printf("+sin(%d",i); else printf("-sin(%d",i);} for(i=0;i<a;i++) printf(")"); } } Edited by author 29.10.2020 21:19 /*************************************************************************************************** Anzmaul Haque Akash DIU, Daffodil International University E-mail: anzamul15-2297@diu.edu.bd Youtube: https://www.youtube.com/channel/UCXvXHUkxyLYKeQkIg_RyMBw******************************************************************************************************/ #include<bits/stdc++.h> #define ln (int)1e6 #define pi acos(-1.0) #define pb push_back #define pf push_front 1 #define mp make_pair #define F first #define S second #define INF 1000000000000000000 #define LES -1000000000000000000 #define intlim 2147483648 #define ll long long #define ull unsigned long long #define str string #define in insert #define all(akash) akash.begin(),akash.end() #define ms(arr) memset(arr,0,sizeof(arr)) #define msbooltrue(arr) memset(arr,true,sizeof(arr)) #define msboolfalse(arr) memset(arr,false,sizeof(arr)) #define msINF(arr) memset(arr,INF,sizeof(arr)) #define case1(cs) cout<<"Case "<<cs<<": " #define case2(cs) cout<<"Case "<<cs<<":\n" #define lb cout<<"\n"; #define vec vector #define qu queue #define li list #define pq priority_queue #define em empty #define fori(i,a,b) for(int i=0;i<b;i++) #define ford(i,a,b) for(int i=b-1;i>=0;i--) #define forc(ch); for(char ch:str) #define sc1(a) scanf("%lld",&a) #define sc2(a,b) scanf("%lld %lld",&a,&b) #define sc3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c) #define sc4(a,b,c,d) scanf("%lld %lld %lld %lld",&a,&b,&c,&d) #define sc5(a,b,c,d,e) scanf("%lld %lld %lld %lld %lld",&a,&b,&c,&d,&e) using namespace std; void solve(ll n){ ll temp_n=n; temp_n--; for(ll i=0; i<n-1; i++){ cout<<"("; } cout<<"sin(1)+"<<n<<")"; //Segment 1. str s="sin(1-sin("; // if n>1 this one is using for the template. for(ll i=2;i<=n;i++){ //main loop. str temp; temp.clear(); temp=s; for(ll x=2; x<i;x++){ //This one creat middle of Every part. if(x%2==0){ //' + ' for even ' - ' for odd. temp+=to_string(x); temp+="+sin("; } else{ temp+=to_string(x); temp+="-sin("; } } temp+=to_string(i); for(ll y=1;y<=i;y++){ //for closing ' ) ' every equation. temp+=")"; } cout<<temp; //print each segment. if(temp_n > 1){ cout<<"+"<<temp_n<<")"; //Printing every segment last digit with out 1. } temp_n--; } cout<<"+1";lb//This one for end. } int main() { ll n; sc1(n); if(n>1){ solve(n); //solve function. } else if(n==1){ cout<<"sin(1)+1";lb //for 1. } return 0; } 0 1 sin(1)+1 2 (sin(1)+2)sin(1-sin(2))+1 3 ((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1 4 (((sin(1)+4)sin(1-sin(2))+3)sin(1-sin(2+sin(3)))+2)sin(1-sin(2+sin(3-sin(4))))+1 5 ((((sin(1)+5)sin(1-sin(2))+4)sin(1-sin(2+sin(3)))+3)sin(1-sin(2+sin(3-sin(4))))+2)sin(1-sin(2+sin(3-sin(4+sin(5)))))+1 6 (((((sin(1)+6)sin(1-sin(2))+5)sin(1-sin(2+sin(3)))+4)sin(1-sin(2+sin(3-sin(4))))+3)sin(1-sin(2+sin(3-sin(4+sin(5)))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+1 7 ((((((sin(1)+7)sin(1-sin(2))+6)sin(1-sin(2+sin(3)))+5)sin(1-sin(2+sin(3-sin(4))))+4)sin(1-sin(2+sin(3-sin(4+sin(5)))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+1 8 (((((((sin(1)+8)sin(1-sin(2))+7)sin(1-sin(2+sin(3)))+6)sin(1-sin(2+sin(3-sin(4))))+5)sin(1-sin(2+sin(3-sin(4+sin(5)))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+1 9 ((((((((sin(1)+9)sin(1-sin(2))+8)sin(1-sin(2+sin(3)))+7)sin(1-sin(2+sin(3-sin(4))))+6)sin(1-sin(2+sin(3-sin(4+sin(5)))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+1 10 (((((((((sin(1)+10)sin(1-sin(2))+9)sin(1-sin(2+sin(3)))+8)sin(1-sin(2+sin(3-sin(4))))+7)sin(1-sin(2+sin(3-sin(4+sin(5)))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10))))))))))+1 #include<bits/stdc++.h> using namespace std; void prin ( int i) { int j; for ( j =1 ; j <= i ;j++) { cout << "sin(" << j; if ( j == i){ for (j = 0 ; j<i ; j ++) cout <<")"; break;} else { if (j%2) cout << "-"; else cout << "+"; } } } int main() { int i,j,n; cin >> n; int k = n; for (i = 1; i < n ;i++) cout << "("; for ( i = 1 ; i <= n ; i++,k--) { prin(i); if (i!= n) cout << "+"<<k<<")"; } cout << "+1\n"; return 0; } Don't forget to make an endline in your pretty code.... #include <bits/stdc++.h> int main() { int n,i,j,k; scanf("%d",&n); for(i=1; i<=n; i++){ if(i==1 && n!=1){ printf("("); } for(j=1; j<=i; j++){ if(i==1 && n==i){ printf("(sin(1))+%d",n); } else if(i==1){ printf("(sin(1)+%d)",n); } else { if(j%2==0){ printf("-sin(%d",j); } else if(j==1){ printf("sin(%d",j); } else { printf("+sin(%d",j); } if(j==i){ //printf(")"); for(k=1; k<=i; k++){ printf(")"); } } } } //if(i==n){ // printf(")"); // } if(i!=1 && i!=n){ printf("+%d)",n+1-i); } else if(i!=1 && i==n){ printf("+%d",n+1-i); } } return 0; } using System; class Test { public static void Main() { String strB = ""; String strA = ""; int num = Convert.ToInt32(Console.ReadLine()); int b = 1; for (int a = num; a > 0; a--) { strA = StrAMaker(a); strB = ')' + strA + '+' + b + strB; b++; } string s3 = new string('(', --num); strB = s3 + strB.TrimStart(')'); Console.WriteLine(strB); } public static string StrAMaker (int a) { string s1 = new string(')', a); String s2 = ""; for (int i = 1; i <= a; i++) { if (i % 2 == 0) { s2 = s2 + "sin(" + i + "+"; if (i == a) s2 = s2.TrimEnd('+') + s1; } else { s2 = s2 + "sin(" + i + "-"; if (i == a) s2 = s2.TrimEnd('-') + s1; } } return s2; } } my code: #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef pair<string , string> pss; #define all(x) (x).begin(),(x).end() #define Sort(x) sort(all((x))) #define F first #define S second #define sep ' ' #define file_io freopen("input.txt" , "r+" , stdin) ; freopen("output.txt" , "w+" , stdout); #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define error(x) cerr << "$$$ " << x << '\n'; #define error2(x,y) cerr << "#F : " << x << " #S : " << y << '\n'; #define pb push_back const ll MX5 = 3*1e5+3; const ll MX6 = 2*1e6+3; const ll INF = 8e18; const ll MOD = 1e9 + 7; const ll MOD2= 998244353; ll power(ll a, ll b, ll md) { return (!b ? 1 : (b & 1 ? a * power(a * a % md, b / 2, md) % md : power(a * a % md, b / 2, md) % md)); } ll bmm(ll a,ll b){ return (a%b==0 ? b : bmm(b,a%b)); } ll A[MX5]; string num(ll n){ string ans=""; while(n){ ans=(char)(n%10+'0')+ans; n/=10; } return ans; } string An(ll t,ll n){ string a=num(t); if(t==n){ return "sin("+a+")"; } if(t%2==1){ return "sin("+a+"-"+An(t+1,n)+")"; } return "sin("+a+"+"+An(t+1,n)+")"; } string Sn(ll t,ll n){ string a=num(n-t+1); if(t==1){ return An(1,1)+"+"+a; } return "("+Sn(t-1,n)+")"+An(1,t)+"+"+a; } int main(){ fast_io //file_io ll n; cin >> n; string answer=Sn(n,n); cout << answer; return 0; } Edited by author 12.08.2019 13:01 i find out its because of language of compiler use G++ 7.1 for c++ :) #include<iostream> using namespace std; void sin (int n,int i) { if(i==n+1) return ; else { if(i==1) { cout<<"sin("<<i; sin(n,i+1); } else if(i%2==1) { cout<<"+sin("<<i; sin(n,i+1); } else { cout<<"-sin("<<i; sin(n,i+1); } cout<<")"; } } void sol( int n,int i) { if(i==n) return; if(i==1) for(int i=1;i<n;i++) cout<<'('; sin(i,1); cout<<'+'<<n-i+1<<')'; sol(n,i+1); if(i==1) { sin(n,1); cout<<"+1"; } } int main () { int n; cin>>n; sol(n,1); } i have some problems with (), please give answers for some other cases 1 Edited by author 06.11.2015 00:47 Input: 4 Output: (((sin(1)+4)sin(1-sin(2))+3)sin(1-sin(2+sin(3)))+2)sin(1-sin(2+sin(3-sin(4))))+1 I thought i'll never get AC at this problem, but after some time i wrote that very nice (as for me ^___^) functions doing the work. void a( int n, int k ) { -printf("sin(%d",k); -if ( k < n ) -{ --if ( k % 2 ) ---printf("-"); --else ---printf("+"); --a( n, k + 1 ); -} -printf(")"); } void s( int n, int k ) { -if ( k < n ) -{ --printf("("); --s( n, k + 1 ); --printf(")"); -} -a( n - k + 1, 1 ); -printf("+%d",k); } For answer just need to call s( n, 1 ). Good luck! Edited by author 20.03.2010 18:23 void s(int n, int k) { printf("sin(%d",k); if (n!=k) { putchar(((k&1)<<1)+43); s(n,++k); } putchar(')'); } void p(int n, int k) { if (k>1) { putchar('('); p(n,k-1); } s(k,1); printf("+%d",n+1-k); if (k<n) putchar(')'); } my algorithm... for answer p(n,n) Thanks, I was stuck in the recursion for Sn. :) Here is my code: # include <bits/stdc++.h> using namespace std; string s[300]; string conv(int x) { string str; while(x) { str.push_back(x % 10 + '0'); x /= 20; } reverse(str.begin(), str.end()); return str; } int main() { int n; cin >> n; for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) { s[i] += "sin(" + conv(j); if(j != i) { if(j % 2) s[i].push_back('-'); else s[i].push_back('+'); } } for(int j = 1; j <= i; j++) s[i].push_back(')'); } for(int i = 1; i < n; i++) cout << '('; for(int i = 1; i <= n; i++) { cout << s[i] << '+' << n - i + 1; if(i != n) cout << ')'; } cout << endl; return 0; } Edited by author 13.11.2015 09:37 Edited by author 13.11.2015 09:37 Here you go. 9 ((((((((sin(1)+9)sin(1-sin(2))+8)sin(1-sin(2+sin(3)))+7)sin(1-sin(2+sin(3-sin(4))))+6)sin(1-sin(2+sin(3-sin(4+sin(5)))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+1 11 ((((((((((sin(1)+11)sin(1-sin(2))+10)sin(1-sin(2+sin(3)))+9)sin(1-sin(2+sin(3-sin(4))))+8)sin(1-sin(2+sin(3-sin(4+sin(5)))))+7)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10))))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10+sin(11)))))))))))+1 thank you very much! you help me a lot! At first I thought I was getting WA's because of the wrong minus sign. Actual reason was printing integers. I was trying to print integers using just PUTCHAR. Of course it worked fine for 0-9. And was failing for other numbers. Maybe correct name for that problem is "SINE dance"? "Sinus" is something about anathomy. #include <iostream> #include <cstdlib> #include <string> using namespace std; string S, A; unsigned short An = 1; bool negative = true; void get_next_A(); void get_S(unsigned short); int main() { unsigned short input_n; cin >> input_n; get_S(input_n); cout << S << endl; return 0; } void get_next_A() { if(An == 1) A = "sin(1)"; else { A.erase(A.size() - An + 1, An); if(negative) A += "-sin("; else A += "+sin("; char buffer[5]; itoa(An, buffer, 10); A += buffer; for(unsigned short j = 0; j < An; ++j) A += ")"; negative = !negative; } ++An; return; } void get_S(unsigned short n) { char _buffer[10]; for(unsigned short i = 0; i < n - 1; ++i) S += '('; for(unsigned short i = n; i > 0; --i) { get_next_A(); itoa(i, _buffer, 10); S += A; S += '+'; S += _buffer; if(i != 1) S += ')'; } return; } You can make it simpler :) For example, here is the function generating sine expressions: string get_sine_expression(int x, int n) { if (x == n) return "sin(" + to_string(x) + ")"; char sign = x & 1 ? '-' : '+'; return "sin(" + to_string(x) + sign + get_sine_expression(x + 1, n) + ")"; } ((((((((((sin(1)+11)sin(1-sin(2))+10)sin(1-sin(2+sin(3)))+9)sin(1-sin(2+sin(3-si n(4))))+8)sin(1-sin(2+sin(3-sin(4+sin(5)))))+7)sin(1-sin(2+sin(3-sin(4+sin(5-sin (6))))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+5)sin(1-sin(2+sin(3- sin(4+sin(5-sin(6+sin(7-sin(8))))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin( 7-sin(8+sin(9)))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-s in(10))))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10+s in(11)))))))))))+1 When N = 11 Программа почему-то постоянно дает сбой на 2-ом тесте, но так как явные ошибки в коде не обнаружены, может просто я не понял условие? 0 1 sin(1)+1 2 (sin(1)+2)sin(1-sin(2))+1 3 ((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1 4 (((sin(1)+4)sin(1-sin(2))+3)sin(1-sin(2+sin(3)))+2)sin(1-sin(2+sin(3-sin(4))))+1 5 ((((sin(1)+5)sin(1-sin(2))+4)sin(1-sin(2+sin(3)))+3)sin(1-sin(2+sin(3-sin(4))))+2)sin(1-sin(2+sin(3-sin(4+sin(5)))))+1 6 (((((sin(1)+6)sin(1-sin(2))+5)sin(1-sin(2+sin(3)))+4)sin(1-sin(2+sin(3-sin(4))))+3)sin(1-sin(2+sin(3-sin(4+sin(5)))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+1 7 ((((((sin(1)+7)sin(1-sin(2))+6)sin(1-sin(2+sin(3)))+5)sin(1-sin(2+sin(3-sin(4))))+4)sin(1-sin(2+sin(3-sin(4+sin(5)))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+1 8 (((((((sin(1)+8)sin(1-sin(2))+7)sin(1-sin(2+sin(3)))+6)sin(1-sin(2+sin(3-sin(4))))+5)sin(1-sin(2+sin(3-sin(4+sin(5)))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+1 9 ((((((((sin(1)+9)sin(1-sin(2))+8)sin(1-sin(2+sin(3)))+7)sin(1-sin(2+sin(3-sin(4))))+6)sin(1-sin(2+sin(3-sin(4+sin(5)))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+1 10 (((((((((sin(1)+10)sin(1-sin(2))+9)sin(1-sin(2+sin(3)))+8)sin(1-sin(2+sin(3-sin(4))))+7)sin(1-sin(2+sin(3-sin(4+sin(5)))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10))))))))))+1 Блин. Все понял. Очень, очень и еще раз очень глупая ошибка. Edited by author 03.02.2016 00:55 Found the mistake :) Edited by author 09.07.2015 01:22 #include<stdio.h> main() { int n,i,j; scanf("%i",&n); for(i=1;i<n;i++) printf("("); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { if(j>1) printf((j&1)?"+":"-"); printf("sin(%i",j); } for(j=1;j<=i;j++)printf(")"); printf("+%i",n+1-i); if(i!=n)printf(")"); } } A concise code. Much better than mine. |
|